Squid 透明代理仅用于传出流量

Squid 透明代理仅用于传出流量

我有一个 API 繁重的 Rails 服务器,因此我想在所有端口 80 活动和现实世界之间运行 Squid 缓存透明代理。但是我不需要传入流量通过该 Squid 代理。例如

Rails -> Squid -> Internet
Internet -> Rails

我无法想象这是一个不寻常的设置,但我似乎无法在网上找到任何相关示例。按照透明 Squid 教程操作,所有传入流量都会到达 Squid 代理,而传出流量似乎会直接经过它(尽管我对此不太确定)。

这是ifconfig的输出。我想它与任何答案都相关。

eth0      Link encap:Ethernet  HWaddr f2:3c:91:ae:33:6b  
      inet addr:176.58.105.173  Bcast:176.58.105.255  Mask:255.255.255.0
      inet6 addr: fe80::f03c:91ff:feae:336b/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:330029 errors:0 dropped:0 overruns:0 frame:0
      TX packets:185242 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:333723993 (333.7 MB)  TX bytes:34410551 (34.4 MB)
      Interrupt:44 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:684735 errors:0 dropped:0 overruns:0 frame:0
      TX packets:684735 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:54837497 (54.8 MB)  TX bytes:54837497 (54.8 MB)

答案1

我不会费心设置透明代理。相反,只需在 127.0.0.1:3128 上运行 Squid,然后使用 Net::HTTP::Proxy 进行 API 调用。文档在这里。我不建议一开始就通过代理传输所有内容,而是通过特定的调用,直到您熟悉设置为止。

关于 Squid 缓存的大小,如果您分配 128MB 的缓存,Squid 将使用大约 196MB 的总内存(包括缓存和开销)。如果您认为您将接近机器的最大内存,我会设置一些交换空间监控,这通常是您超额使用内存的最佳指标。

相关内容