从 nginx 到 squid 的反向代理
Reverse proxy from nginx to squid
类似于this,我正在尝试在 nginx 后面托管一个 squid 代理:
example.com
- 主站点
relay.example.com
- 鱿鱼服务器。
到目前为止,当我尝试使用 squid 代理时,它会抱怨访问非法页面,例如,如果我尝试访问 http://www.google.com
,我会得到一个 Invalid URL 错误说是URL /http://www.google.com
(注意前面的/)。任何人都可以建议为什么会发生这种情况,或者修复 nginx 或者可能在 squid 配置中?
upstream @squid {
server localhost:3128;
}
server {
listen 80;
server_name relay.example.com;
location / {
proxy_pass http://@squid/$scheme://$host$uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Request-URI $request_uri;
proxy_redirect off;
}
}
squid 的日志给出:
1423083723.857 0 127.0.0.1 NONE/400 3530 GET /http://www.google.com/ - HIER_NONE/- text/html
和nginx相同的请求:
12.34.56.78 - - [04/Feb/2015:16:02:03 -0500] "GET http://www.google.com/ HTTP/1.1" 400 3183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0" "-"
我遇到了同样的问题,通过在透明模式下将 squid 设置为 运行 解决了这个问题,如下所示:
http_port 3128 transparent
在 nginx 中:
proxy_pass http://@squid;
在鱿鱼中:
http_port 3128 vhost
这就是修复此 https://imgur.com/qtgrZI9 错误所需的全部内容
类似于this,我正在尝试在 nginx 后面托管一个 squid 代理:
example.com
- 主站点
relay.example.com
- 鱿鱼服务器。
到目前为止,当我尝试使用 squid 代理时,它会抱怨访问非法页面,例如,如果我尝试访问 http://www.google.com
,我会得到一个 Invalid URL 错误说是URL /http://www.google.com
(注意前面的/)。任何人都可以建议为什么会发生这种情况,或者修复 nginx 或者可能在 squid 配置中?
upstream @squid {
server localhost:3128;
}
server {
listen 80;
server_name relay.example.com;
location / {
proxy_pass http://@squid/$scheme://$host$uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Request-URI $request_uri;
proxy_redirect off;
}
}
squid 的日志给出:
1423083723.857 0 127.0.0.1 NONE/400 3530 GET /http://www.google.com/ - HIER_NONE/- text/html
和nginx相同的请求:
12.34.56.78 - - [04/Feb/2015:16:02:03 -0500] "GET http://www.google.com/ HTTP/1.1" 400 3183 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0" "-"
我遇到了同样的问题,通过在透明模式下将 squid 设置为 运行 解决了这个问题,如下所示:
http_port 3128 transparent
在 nginx 中:
proxy_pass http://@squid;
在鱿鱼中:
http_port 3128 vhost
这就是修复此 https://imgur.com/qtgrZI9 错误所需的全部内容