鱿鱼.conf:
http_access allow all
# Squid normally listens to port 3128
http_port 3128 accel defaultsite=localhost no-vhost
cache_peer localhost parent 80 0 no-query originserver name=myAccel
cache_peer_access myAccel allow all
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /usr/local/var/cache/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /usr/local/var/cache/squid
Run Code Online (Sandbox Code Playgroud)
Squid 3.2.9,通过 Homebrew 安装在 OSX 上
localhost: ~ $ squid -v
Squid Cache: Version 3.2.9
configure options: '--disable-debug' '--disable-dependency-tracking' '--prefix=/usr/local/Cellar/squid/3.2.9' '--localstatedir=/usr/local/var' 'CC=cc' 'CXX=c++' 'PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig' …Run Code Online (Sandbox Code Playgroud) 我正在使用 Vagrant 设置虚拟机进行测试。我希望虚拟机内部的 apt 可以在主机上使用代理,以允许缓存所有下载内容在运行的虚拟机实例之间持续存在,不仅是为了提高速度,而且还允许我在启动 vagrant 实例时启动没有网络连接。
我已经设置了正在运行的代理,我想我已经告诉 apt 通过在 Vagrant 脚本中设置它来使用它:
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTP { Proxy "http://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; FTP { Proxy "ftp://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTPS { Proxy "https://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
Run Code Online (Sandbox Code Playgroud)
它正在部分工作,即当我的 wifi 连接被禁用但 Squid 正在运行并且它的缓存中有一些条目时,对源的初始请求命中缓存并工作。我还可以从 Squids 日志文件中看到一些击中 Squid 的请求:
1367492453.816 34 127.0.0.1 TCP_REFRESH_MODIFIED/200 592 GET http://security.ubuntu.com/ubuntu/dists/precise-security/Release.gpg - …Run Code Online (Sandbox Code Playgroud) 我白天在公司防火墙后面,晚上在开放的互联网连接上。我已将 cntlm 配置为转发到我的公司代理,但是当我从开放连接进行连接时,我必须重新配置我的代理设置。
当没有可用代理时,有没有办法让 cntlm 回退到不使用代理?
# List of parent proxies to use. More proxies can be defined
# one per line in format <proxy_ip>:<proxy_port>
#
Proxy 10.73.55.44:80
# <~~ something here to fallback to a direct connection when no proxy is available
Run Code Online (Sandbox Code Playgroud) 对于我的一个项目,我需要连接一长串机器,这些机器实质上是相互代理 HTTP 请求。它是这样的:
网络客户端 - A - B/C - D
当浏览器发出请求时,它首先通过一个位于用户本地机器上的薄 PHP 代理层,其目的是解决跨域请求等复杂问题。它代理到机器 B - 只是一个 nginx 实例,它将 URL 和代理重写到 C。C 在代理到 D 之前进行一些必要的修改,获取响应,并将其返回给 Web 客户端。D 是一个无法触及的远程服务 API。
我在机器 C 上设置会话 cookie 时遇到问题,一直到原始请求。尽管可以设置 cookie,但是当有新请求时,它在 Chrome 网络检查器中不可见,并且当我尝试从显然不存在的 cookie 中获取值时,节点 C 返回空指针异常。
我想,这归结为调整 nginx 代理请求的方式。
我正在尝试配置互联网上的任何 IP 地址都可以访问的 Squid3 代理服务器,但是默认设置很糟糕,无论我做什么,它都会不断给出 TCP_DENIED/403
使我能够使用的最低配置是什么:
然后我将开始实现更多功能,但是现在我在尝试的所有配置中不断收到此错误。
Amazon 的Elastic Load Balancer 支持 PROXY 协议版本 1。这允许负载均衡器后面的服务器确定客户端连接的原始源 IP 地址。
但是,协议规范在第 2 节和第 5 节中明确指出,您必须以某种方式确保只有经过授权的端点才能连接到支持该协议的端口。否则,恶意用户可以直接连接到服务器,绕过代理,并发送一个 PROXY 标头,声称他们希望使用任何源 IP 地址。
我的问题是,你如何用 ELB 做到这一点?据我所知,没有可以连接到服务器的源 IP 地址的固定列表。没有办法限制端口,以便只有您的 ELB 可以连接到它。似乎任何人都可以创建一个 EC2 实例并在 ELB 代理的同一端口上直接连接到您的服务器,模拟负载均衡器,并声称从他们喜欢的任何 IP 地址进行连接。
那不可能是对的。我错过了什么?
我正在尝试按如下方式设置 nginx 配置:当收到如下请求时/tile/SteveCountryVic/1/2/3.png:
http://localhost:5005/1/2/3.png/tile/SteveCountryVic/1/2/3.png这是我的配置,它不太工作:
server {
listen 80;
server_name localhost; error_log /tmp/nginx.error.log notice;
access_log /tmp/nginx.access.log;
location /tile/SteveCountryVic/ {
rewrite_log on;
#rewrite ^.*/(\d+)/(\d+)/(\d+).*$ /$1/$2/$3.png break;
proxy_intercept_errors on;
error_page 404 = @dynamiccycletour;
#proxy_set_header Host $http_host;
#proxy_pass http://127.0.0.1:5005;
proxy_redirect /tile/SteveCountryVic/ http://localhost:5005/;
location @dynamiccycletour {
rewrite_log on;
#rewrite ^(\d+)/(\d+)/(\d+).*$ /tile/SteveCountryVic/$1/$2/$3.png break;
proxy_pass http://115.x.x.x:20008;
}
location /tile/ {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:20008;
proxy_cache my-cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
...
Run Code Online (Sandbox Code Playgroud)
在此配置中,所有请求似乎都被重定向到代理服务器,但最终会提供图像。此外,错误日志包含以下几行:
2013/09/10 09:44:11 [error] …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的内部服务器之一设置 SSL 代理以https://www.googleapis.com使用 Squid进行访问,以使该服务器上的 Rails 应用程序能够googleapis.com通过代理访问。
我是新手,所以我的方法是使用 Squid 设置 SSL 透明代理。我Squid 3.3在 Ubuntu 12.04 上构建,生成一对 ssl 密钥和 crt,并像这样配置鱿鱼:
http_port 443 transparent cert=/home/larry/ssl/server.csr key=/home/larry/ssl/server.key
Run Code Online (Sandbox Code Playgroud)
并将几乎所有其他配置保留为默认值。持有key/crt的目录的授权是drwxrwxr-x 2 proxy proxy 4096 Oct 17 15:45 ssl
回到我的开发笔记本电脑上,我把<proxy-server-ip> www.googleapis.com我/etc/hosts的电话放到我的代理服务器上。
但是当我在 Rails 应用程序中尝试它时,我得到了:
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol
Run Code Online (Sandbox Code Playgroud)
而且我还尝试在 cli 中使用 openssl:
openssl s_client -state -nbio -connect www.googleapis.com:443 2>&1 | grep "^SSL"
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:error …Run Code Online (Sandbox Code Playgroud) 根据该文档在这里,nginx的proxy_connect_timeout不能超过75秒延迟。
我知道有一个有这种延迟的应用程序很糟糕,但我很好奇为什么这个确切的值?
我正在尝试将 AclRandom 用于 Squid 3.2,我想我对此的正确方法有点困惑。这是我的配置:
http_port 3128
auth_param basic program /usr/local/squid32/libexec/basic_ncsa_auth /usr/local/squid32/etc/passwords
auth_param basic children 5
auth_param basic realm proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl my_auth proxy_auth REQUIRED
http_access allow my_auth
max_filedesc 32768
acl randomIP random 1/3
tcp_outgoing_address x.154.198.x randomIP
tcp_outgoing_address x.154.198.x randomIP
tcp_outgoing_address x.154.198.x randomIP
tcp_outgoing_address x.154.198.x
forwarded_for delete
via off
Run Code Online (Sandbox Code Playgroud)
它始终使用列表中的第一个 IP 地址。有谁知道我如何让它随机使用 3 个中的一个?另外,对于我请求的任何网站,我都收到了很多 TCP_MISS,还有其他东西看起来很奇怪吗?
编辑:更新潜在的解决方案:
http_port 3128
auth_param basic program /usr/local/squid32/libexec/basic_ncsa_auth /usr/local/squid32/etc/passwords
auth_param basic children 5
auth_param basic realm proxy
auth_param …Run Code Online (Sandbox Code Playgroud)