设为首页 收藏本站
查看: 966|回复: 0

[经验分享] 编译安装squid3.1--亲测

[复制链接]

尚未签到

发表于 2018-12-27 10:52:44 | 显示全部楼层 |阅读模式
  编译安装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 &quot;localhost&quot; 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] &quot;%rm %ru HTTP/%rv&quot; %Hs %h&quot; &quot;%{User-Agent}>h&quot; %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    >
  refresh_pattern -i \.js$        1440    50%     2880    >
  refresh_pattern -i \.html$      720     50%     1440    >  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 : [transparent] [vhost] [vport[=]] [defaultsite=] ...
  配置 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 &quot;%{X-Forwarded-For}i %l %u %t \&quot;%r\&quot; %>s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot; %h %T&quot; combined
  取到的就是用户真实IP
  本文出自 “Linux Notes” 博客,请务必保留此出处http://sjehzy.blog.运维网.com/1742683/413487


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656407-1-1.html 上篇帖子: varnish与squid的比较 下篇帖子: Squid-Linux下的使用详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表