数码之家

 找回密码
 立即注册
搜索
查看: 570|回复: 0

squid反向代理配置笔记(for win)

[复制链接]
发表于 2022-4-18 20:24:37 | 显示全部楼层 |阅读模式 IP属地:福建厦门

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. http_port 80 accel vhost vport
  2. cache_mem 1792 MB
  3. cache_dir ufs d:/squid/var/cache 20000 16 256
  4. maximum_object_size_in_memory 256 KB
  5. memory_pools_limit 64 MB
  6. acl all src 0.0.0.0/0.0.0.0
  7. http_access allow all
  8. cache_peer 218.85.137.20 parent 80 0 no-query originserver name=imgweb
  9. cache_peer_domain imgweb img.mydigit.net
  10. cache_peer_access imgweb allow all
  11. cache_effective_user nobody
  12. cache_effective_group nobody
  13. access_log none
  14. cache_log none
  15. cache_store_log none
  16. visible_hostname mydigit79
  17. cache_mgr mydigit.net@gmail.com


  18. http_port 80 vhost vport=80
  19. #dns_nameservers 218.85.152.99 218.85.157.99
  20. cache_vary on
  21. acl apache rep_header Server ^Apache
  22. broken_vary_encoding allow apache
  23. cache_mem 1792 MB
  24. maximum_object_size 4096 KB
  25. minimum_object_size 0 KB
  26. maximum_object_size_in_memory 256 KB
  27. cache_dir ufs d:/squid/var/cache 20000 16 256
  28. cache_swap_low 80
  29. cache_swap_high 97
  30. strip_query_terms off
  31. request_header_max_size 10 kb
  32. request_body_max_size 5 MB
  33. memory_pools on
  34. memory_pools_limit 64 MB
  35. pid_filename d:/squid/var/logs/squid.pid
  36. hosts_file C:\WINDOWS\system32\drivers\etc\hosts
  37. refresh_pattern ^ftp:           1440    20%     10080
  38. refresh_pattern ^gopher:        1440    0%      1440
  39. refresh_pattern -i \.gif$ 180 50% 12960 reload-into-ims ignore-reload
  40. refresh_pattern -i \.jpg$ 180 50% 12960 reload-into-ims ignore-reload
  41. refresh_pattern -i \.png$ 180 50% 12960 reload-into-ims ignore-reload
  42. refresh_pattern -i \.jpeg$ 180 50% 12960 reload-into-ims ignore-reload
  43. refresh_pattern -i \.txt$ 180 50% 12960 ignore-reload
  44. refresh_pattern -i \.rar$ 180 50% 12960 ignore-reload
  45. refresh_pattern -i \.zip$ 180 50% 12960 ignore-reload
  46. refresh_pattern -i \.7z$ 180 50% 12960 ignore-reload
  47. refresh_pattern -i \.pdf$ 180 50% 12960 ignore-reload
  48. refresh_pattern -i \.htm$ 180 50% 12960 ignore-reload
  49. refresh_pattern -i \.html$ 180 50% 12960 ignore-reload
  50. refresh_pattern .                           60  20%    4320
  51. acl all src 0.0.0.0/0.0.0.0
  52. acl p-manager proto cache_object
  53. acl s-localhost src 127.0.0.1/255.255.255.255
  54. acl d-localhost dst 127.0.0.0/8
  55. acl d-domains dstdomain img.mydigit.net
  56. acl p-ssl  port 443 563
  57. acl p-safe port 80 443 563
  58. acl m-conn method CONNECT
  59. acl m-purge method PURGE
  60. #acl n-maxconn maxconn 100
  61. http_access allow p-manager s-localhost
  62. http_access allow m-purge
  63. http_access allow  !p-safe
  64. http_access deny  m-conn !p-ssl
  65. #http_access deny  n-maxconn
  66. http_access allow p-manager
  67. http_access allow d-domains
  68. http_access deny all
  69. http_reply_access allow all
  70. acl r-url urlpath_regex realtime
  71. cache deny r-url
  72. icp_access allow all
  73. follow_x_forwarded_for allow all
  74. acl_uses_indirect_client offrange_offset_limit -1
  75. dns_timeout 2 seconds
  76. forward_timeout 10 seconds
  77. connect_timeout 10 seconds
  78. peer_connect_timeout 6 seconds
  79. read_timeout 10 seconds
  80. request_timeout 6 seconds
  81. persistent_request_timeout 16 seconds
  82. cache_mgr mydigit.net@gmail.com
  83. cache_effective_user nobody
  84. cache_effective_group nobody
  85. visible_hostname mydigit140
  86. logfile_rotate 10
  87. always_direct allow all
  88. error_directory C:\squid\share\errors\Simplify_Chinese
  89. coredump_dir d:/squid/var/cache
  90. #access_log d:/squid/var/logs/access.log squid
  91. #cache_log d:/squid/var/logs/cache.log
  92. #cache_store_log d:/squid/var/logs/store.log
  93. access_log none
  94. cache_log none
  95. cache_store_log none
复制代码



http_port 80 accel vhost vport

accel 表示反向代理加速模式使用
vhost 在使用accel时,至少要加vhost,表示后面web服务器是基于域名的虚拟主机。
vport 如果后端 的web服务器是基于ip的虚拟主机,则使用
设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误
http_port 80:指定Squid所服务的端口为80

http_port 80 transparent
支持透明代理,主要用于内网访问外网

问:单位新项目用squid作反向代理服务器,这两天看了不少关于squid配置的文档,但是关于squid.conf文件中的http_port参数的一些选项还存在疑问,希望大家能给些帮助。
一般反向代理会有如下配置:http_port 80 accel vhost vport
非常疑惑accel,vhost,vport这三个参数的用途,手册、配置文档以及网络文章都查了,都是那么几句话解释,但我实在看明白,请不要转帖哪些解释了。
我曾经试图在配置文件中去掉accel选项,squid重启后,并没有任何异常,而vhost选项去掉后,网页就无法正常访问了,所以最好可以举例说明这几个参数的用途,譬如干啥用的,加了它起什么作用,不加它有何影响
答:
http://old.squid-cache.org/Doc/Users-Guide/detail/accel.html
http://www.visolve.com/squid/squid26/network.php
仔细看着这两个链接

说一下我的理解吧:
1、如果你不加http_port 80 accel vhost vport 这个配置的话,squid默认就作为一个缓存服务器(cache server, 参考第一个链接),这个时候如果客户端有请求发到了squid,squid起到的是路由功能,把请求转发出去,被真正的web server接收,web server返回响应,当squid接收到响应后,根据响应头决定是否缓存,此时的squid,只是一个cache server。
2、如果你加http_port 80 accel vhost vport 这个配置的话,squid就从一个缓存变成了一个web server(参考第一个链接), 这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。另外绑定端口还有一个好处,可以充分利用http 响应头中的到期时间头和etag头。
3、你提到“去掉accel选项,squid重启后,并没有任何异常”,这个参考第二个链接,如果你设置了vhost vport, 默认是具有的(Implies accel)

设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误


maximum_object_size 4096 KB
能缓存的最大文件大小,对应wmv,rm文件,建议设置为32768 kB,默认4096KB,对于论坛附件最大为3MB,所以设置为4096KB
minimum_object_size 0 KB
小于此大小的文件将不被缓存,默认0KB,一般不用设置
maximum_object_size_in_memory 256 KB
内存中能缓存的最大文件大小,以缓存常用的小文件为主
例如Mean Object Size: 160.46 KB,一般要把maximum_object_size_in_memory设置成离它最近的128的倍数.在这个例子中maximum_object_size_in_memory 的值应该是256kB.
对象的最大尺寸,超过不会被放入内存,默认8KB,根据网站网页一般的尺寸设置大小,最好是4kb的倍数

cache_dir ufs d:/squid/var/cache 20000 16 256
#指定squid用来存储对象的硬盘交换空间的大小及其目录结构。缓存的目录,放在squid/var/下面,单位MB,这个大小是20G,第一级目录是16个,第二级目录是256个。因为一个目录下面放置的文件和目录数量有限制,所以这里必须要设置多个目录,以适合squid存放大量文件的需要。目录数千万别设置太大,否则会引起系统死机.

cache_swap_low 80
cache_swap_high 95
cache_swap_low和cache_swap_high指令控制了存储在磁盘上的对象的置换。它们的值是最大cache_dir体积的百分比,这个最大cache体积来自于所有cache_dir大小的总和。
如果总共磁盘使用低于cache_swap_low,squid不会删除cache目标。如果cache体积增加,squid会逐渐删除目标。在稳定状态下,你发现磁盘使用总是相对接近cache_swap_low值。你可以通过请求cache管理器的storedir页面来查看当前磁盘使用状况.
请注意,改变cache_swap_high也许不会对squid的磁盘使用有太大效果。在squid的早期版本里,该参数有重要作用;然而现在,它不是这样了。


cache_mem 1792 MB
是SQUID可用到的最大内存
一般设置成服务器内存的一半或更多,只要运行过程中LINUX没有使用SWAP就可以.
#实际测试Win2003系统最好少于2048MB,或者等于系统内存的1/3,不然进程会死掉。

memory_pools off
squid预先分配一定的内存用于cache,以提高效率,默认on;如果os内存管理很高效,可以off
如果你将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。缺省为on,memory_pools on
memory_pools_limit 50 MB
#内存池,用来存放缓存文件的链表,方便高速查找文件存放的对应位置,不需要太大。不懂就别管了
squid在memory_pools中保存的预分配(未使用的)内存的上限,当pools开启时有效,0表示不限制大小,最好设一个的值,大些,以保证内存效率,实际不一定会用到这个值,默认5MB。这个值可以设置为64-128MB,squid会根据需求占用之。

在服务器只提供proxy服务而没有像apache那样的其它服务时,可以关闭memory_pools 选项,让squid自动决定分配多少内存:
memory_pools off
memory_pools_limit none
如果不是专门的服务器,就要打开memory_pools 选项,适当的设置


cache_vary on
默认on,表示可以缓存静态文件

emulate_httpd_log on
使Squid按照Web服务器的格式创建访问记录,Web访问记录分析程序,就需要设置这个参数

hosts_file C:\WINDOWS\system32\drivers\etc\hosts
#DNS域名解析的文件目录,也就是主服务器的IP,告诉SQUID要到哪里去抓取数据,内部格式如:61.129.33.42 img.mydigit.net

cache_peer 192.168.21.129 parent 80 0 no-query originserver name=imgweb
#用户访问web时,Squid向192.168.21.129源服务器的80端口发送请求,no-query为不发送icp信息包到此机器,一般设置原始主机用(源服务器),如果也是cache机,则需要互相发送icp包验证存在性。originserver指定此机为原始内容服务器,用于加速模式
cache_peer_domain imgweb img.mydigit.net
#设置web域名为img.mydigit.net
cache_peer_access imgweb allow all
#设置访问权限,允许所有外部客户端访问web

cache_effective_user squid
#设置运行SQUID的用户,Windows系统下使用nobody
cache_effective_group squid
#设置运行SQUID的用户组,Windows系统下使用nobody



visible_hostname mydigit79
出错时缓存服务器输出的机器名字,多台squid分布的时候这个很重要,通过设置多个不同的名字,很容易就可以找出哪台服务器有问题。

#限制同一IP客户端的最大连接数
acl OverConnLimit maxconn 15
http_access deny OverConnLimit


查看命中率:C:\squid\bin>squidclient -p 80 mgr:info

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-6-3 20:36 , Processed in 0.234001 second(s), 9 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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