编译安装squid3.1亲测

摘要:
--启用下划线:允许带下划线的URL首先出现在已解析的URL中,因为默认squid会认为带下划线的地址非法,并拒绝访问该地址。制作make安装注意事项:如果安装squid 2.6,则在制作过程中会报告错误,并提示错误:squid define reference to `n_coss_Dirs'solution:wgethttp://www.squid-cache.org/Versions/v2/2.6/changesets/11036.patchCdsquid-2.6STABLE4补丁-p1˂../11036.补丁/configure是正常的,我在这里安装squid-3.1.4,因为上面的错误被注意到了。

编译安装Squid2.6

1,设置“文件描述符”,并设置用户同时打开文件数量

# vi /usr/include/bits/typesizes.h

# vi /usr/include/linux/posix_types.h

把里边的 #define __FD_SETSIZE 1024 改成 65536

2,设置当前环境

# ulimit -Hs 65536

# ulimit -n 65536

H参数是硬性限制,s是堆栈上限,n是文件描述符上限。

3,优化cpu

以下参数可以在 http://gentoo-wiki.com/Safe_Cflags 查到自己的cpu参数

# export CHOST="i686-pc-linux-gnu"

# export CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"

# export CXXFLAGS="${CFLAGS}"

1:下载

Wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.4.tar.gz

Tar zxvf squid-3.1.4.tar.gz

Cd squid-3.1.4

2:编译squid

./configure --prefix=/usr/local/squid --localstatedir=/var/log/squid1 --enable-gnuregex --enable-icmp --enable-kill-parent-hack --enable-snmp --disable-ident-lookups --enable-cahce-digests --enable-arp-acl --enable-default-err-languages="Simplify_Chinese" --enable-linux-netfilter --enable-auth-modules --enable-follow-x-forwarded-for --enable-storeio=aufs,ufs --with-maxfd=65536 --with-pthreads --enable-dlmalloc --enable-poll --enable-underscore --enable-stacktraces --enable-removal-policies=heap,lru --enable-delay-pools

参数详解:

--prefix=/usr/local/squid1 \安装路径(注意因我的机器装有两种版本,所以命名不一样)

--localstatedir=/var/log/squid \日志文件的安装路径

--sysconfdir=/etc \ 配置文件的安装路径

--enable-gnuregex \ :由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。

--enable-icmp \加入icmp支持

--enable-kill-parent-hack \:关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦

--enable-snmp \:此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。

--disable-ident-lookups \:防止系统使用RFC931规定的身份识别方法。

--enable-cahce-digests \:加快请求时,检索缓存内容的速度。

--enable-arp-acl \:可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗

--enable-default-err-languages="Simplify_Chinese" \ :指定出错是显示的错误页面为简体中文

--enable-linux-netfilter \:可以支持透明代理

--enable-auth-modules 此编译选项启用认证模块,可以对访问代理用户进行授权

--enable-follow-x-forwarded-for \

--enable-storeio=aufs,ufs \(支持的存储模块)

--with-maxfd=65536 \参数是增大squid文件描述符到65536

--with-pthreads \

--enable-dlmalloc \

--enable-poll \ 应启用Poll()函数而不是select()函数,通常而言poll(轮询)select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。

--enable-underscore \ :允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。

--enable-stacktraces \

--enable-removal-policies=heap,lru \

--enable-delay-pools \此选项使能一个延时池,这样能对某些特定的请求限制额定带宽。

make

makeinstall

注意:如你安装是squid2.6 make 时会有报错,

提示错误:squid undefined reference to `n_coss_dirs'

  解决方法:

  wget http://www.squid-cache.org/Versions/v2/2.6/changesets/11036.patch

  cd squid-2.6.STABLE4

  patch -p1 < ../11036.patch

  ./configure正常了。......

我这里是安装squid-3.1.4版本,因以上错注明一下。

3:安装后配置

我的配置文件如下,如不用我的配置文件,请一定要把

cache_effective_user nobody

cache_effective_group nobody

加到你自己的 /usr/local/squid/etc/squid.conf 里,要不然以下编译时会因权限问题,会出错

由于经历问题,只翻译了部分,不过已经足够用。加了限制速度内容,这样可以更好的应用于网站及cdn节点,控制带宽。

[root@www htdocs]# vi /usr/local/squid1/etc/squid.conf

http_port 192.168.18.122:3128 vhost vport

cache_peer 192.168.18.122 parent 80 0 no-query originserver weight=1 name=a4

cache_peer_domain a4 sjehzy.net

#

# Recommended minimum configuration:

#

acl manager proto cache_object

acl localhost src 127.0.0.1/32

acl localhost src ::1/128

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

acl to_localhost dst ::1/128

# Example rule allowing access from your local networks.

# Adapt to list your (internal) IP networks from where browsing

# should be allowed

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network

acl localnet src 172.16.0.0/12 # RFC1918 possible internal network

acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

acl localnet src fc00::/7 # RFC 4193 local private network range

acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

acl localnet src sjehzy.net

acl SSL_ports port 443

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 # https

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

#

# Recommended minimum Access Permission configuration:

#

# Only allow cachemgr access from localhost

http_access allow manager localhost

http_access deny manager

# Deny requests to certain unsafe ports

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports

http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent

# web applications running on the proxy server who think the only

# one who can access services on "localhost" is a local user

#http_access deny to_localhost

#

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

#

# Example rule allowing access from your local networks.

# Adapt localnet in the ACL section to list your (internal) IP networks

# from where browsing should be allowed

http_access allow localnet

http_access allow localhost

# And finally deny all other access to this proxy

http_access deny all

# Squid normally listens to port 3128

#http_port 3128

# We recommend you to use at least the following line.

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?

###

cache_mem 99 MB

max_open_disk_fds 0

maximum_object_size 20 MB

maximum_object_size_in_memory 20 MB

# Uncomment and adjust the following to add a disk cache directory.

cache_dir ufs /usr/local/squid1/log/cache 100 16 256

cache_swap_low 80

cache_swap_high 97

strip_query_terms off

request_header_max_size 10 kb

request_body_max_size 1 MB

memory_pools on

memory_pools_limit 150 MB

emulate_httpd_log o

# Leave coredumps in the first cache dir

coredump_dir /usr/local/squid1/log/cache

cache_store_log /usr/local/squid1/log/logs/store.log

###

emulate_httpd_log on

#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

cache_access_log /usr/local/squid1/log/logs/access.log

##

#error_directory /usr/local/squid/share/errors/Simplify_Chinese

# Add any of your own refresh_pattern entries above these.

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

refresh_pattern . 0 20% 4320

###############################

#refresh_pattern ^ftp: 60 20% 10080

#refresh_pattern ^gopher: 60 0% 1440

#refresh_pattern ^gopher: 60 0% 1440

#refresh_pattern . 0 20% 1440

refresh_pattern -i \.css$ 360 50% 2880 reload-into-ims

refresh_pattern -i \.js$ 1440 50% 2880 reload-into-ims

refresh_pattern -i \.html$ 720 50% 1440 reload-into-ims

refresh_pattern -i \.jpg$ 1440 90% 2880 ignore-reload

refresh_pattern -i \.gif$ 1440 90% 2880 ignore-reload

refresh_pattern -i \.swf$ 1440 90% 2880 ignore-reload

refresh_pattern -i \.jpg$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.png$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.bmp$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.doc$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.ppt$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.xls$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.pdf$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.rar$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.zip$ 1440 50% 2880 ignore-reload

refresh_pattern -i \.txt$ 1440 50% 2880 ignore-reload

###############################

cache_effective_user nobody

cache_effective_group nobody

cache_mgr hyr23k@163.com

###

dns_timeout 2 seconds

forward_timeout 30 seconds

connect_timeout 30 seconds

peer_connect_timeout 30 seconds

read_timeout 30 seconds

request_timeout 6 seconds

persistent_request_timeout 16 seconds

#

visible_hostname sjehzy.net

logfile_rotate 0

截止此处均是我的squid.conf文件内容。

4:安装完成后相关创建文件与权限

#mkdir /usr/local/squid1/log/logs/store.log

# chown nobody:nobody /usr/local/squid1/log //用户nobody用户和组来运行squid

# mkdir /usr/local/squid1/log/cache //建立squid缓存目录

# chown nobody:nobody /usr/local/squid1/log/cache //同样,给权限

# cd /usr/local/squid/sbin

# ./squid -z //建立缓存目录

# ls /var/spool/squid //查看是否建立成功

#//usr/local/squid1/sbin/squid –s //启动squid

5:开机运行squid

# vi /etc/rc.local

将以下内容添加最下边

ulimit -Hs 65536

ulimit -n 65536

/usr/local/squid/sbin/squid

存盘,退出,完结。

6:iptables 端口映射

iptables -t nat -A PREROUTING -s 192.168.1.225/32 -p tcp --dport 80 -j REDIRECT –to-ports 3128

:

Vi /etc/sysconfig/iptables添加

-A PREROUTING -s ! 192.168.18.122 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

以下对以上信息解释:

http_port 80 vhost vport=3128

http_port <host>:<port> [transparent] [vhost] [vport[=<port>]] [defaultsite=<host>] ...

配置 Squid 绑定的 HTTP 端口和 IP 地址,默认配置是 http_port 3180.

host 可以是 IP 地址或者主机名,如果指定主机名,Squid 尝试获取主机名对应的 IP 地址。如果没有指定 host, Squid 将绑定所有地址的端口;

配置选项: transparent - 支持透明代理,不能与 vhost / vport 同时设置

vhost - 内容加速器主机

vport - 内容加速器端口,通常与 http_port 相同,可以使用 vport= 设置其他端口defaultsite= - 内容加速器的默认网址

acl apache rep_header Server ^Apache

#

broken_vary_encoding allow apache

cache_mem 2048 MB

#使用内存大小

maximum_object_size 409600 KB

#超过此文件大小的对象将不缓存

minimum_object_size 0 KB

#小于此大小文件将不被缓存

maximum_object_size_in_memory 512 KB

#内存中能缓存的最大文件大小

cache_dir ufs /var/spool/squid 20480 16 256

#缓存目录设置

cache_swap_low 80

#当交换分区利用率到这个百分比,那么开始替换

cache_swap_high 97

#当交换分区利用率到这个百分比,开始大量替换

strip_query_terms off

request_header_max_size 10 kb

request_body_max_size 0 kb

#设置HTTP请求的包头和数据大小

memory_pools on

如果将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。

默认为on .

memory_pools on

memory_pools_limit 150 MB

#用来存放请求URL的内存大小

编译squid时加上--enable-follow-x-forwarded-for

然后在squid.conf中输入一行:

follow_x_forwarded_for allow all

后端的Apache取日志(httpd.conf):

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %h %T" combined

取到的就是用户真实IP

免责声明:文章转载自《编译安装squid3.1亲测》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇10、JPA_映射双向多对多的关联关系java中String编码转换 UTF-8转GBK下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JVM学习笔记之CodeCache

一. CodeCache简介 从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。 大致在JVM中的分布如下: 大家都知...

《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程

计算机原理概念: 1、CPU和内存中的存储单元通信线路称为总线(BUS),总线是被指令和数据复用的,所以也称为前端总线。 2、计算机中计算频率的时间标准即晶体振荡器原理,精确计算时间长度,根据相同的时间统计变化的次数,即保持时钟同步。 3、每一个芯片在厂家生产时都有一个以微码(汇编语言)形式存在内置接口,完成一定意义上的智能操作。 4、CPU中控制器在未从...

【转载】Linux系统下源代码包方式安装PHP开发环境

########节选自《细说PHP》################ 2.2 Linux系统下源代码包方式安装环境 在Linux平台下安装PHP有几种方法:使用配置和编译过程,或是使用各种预编译的包。在Linux上安装软件,用户最好的选择是下载源代码包,并编译一个适合自己的版本。LAMP组合中每个成员都是开源的软件,都可以从各自的官方网站上免费下载安装程序...

ORA12705: Cannot access NLS data files or invalid environment specified

ORA-12705: Cannot access NLS data files or invalid environment specified 将\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下的NLS_LANG< /span>键删掉即可。...

Debian中安装MySQL服务器

在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。   apt-getinstall mysql-server mysql-client mysql-server是服务器程序,mysql-client是客户端程序。我们可通过客户端程序来管理服务器,也可通过一些开源 的GUI程序来维护服务器,如phpmyadmin,mysql...

JMV的学习

一.JVM学习 1.1JVM运行机制的最重要的三点:加载(类加载器,classloader) 、内存管理(包含GC)、执行。 如果再加上JDK所作的把java文件编译为二进制class文件的步骤,就组成了Java代码的执行机制三部曲: 编译–>加载–>执行 2.1 Java编译机制 Java编译机制不属于JVM,但是JVM运行class文件...