Reverse proxy from nginx to squid

六眼飞鱼酱① 提交于 2021-02-17 20:49:05

问题


Similar to this, I am trying to host a squid proxy behind nginx:

example.com - the main site

relay.example.com - the squid server.

So far, when I try to use the squid proxy, it will complain about accessing an illegal page, for example, if I try to access http://www.google.com, I get an Invalid URL error saying that the URL /http://www.google.com (note the preceding /). Could anyone suggest why this is happening, or a fix for nginx or perhaps in the squid config?

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;
    }
}

https://imgur.com/qtgrZI9

The log from squid gives:

1423083723.857      0 127.0.0.1 NONE/400 3530 GET /http://www.google.com/ - HIER_NONE/- text/html

And nginx for the same request:

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" "-"

回答1:


in nginx:

proxy_pass http://@squid;

in squid:

http_port 3128 vhost

and that's all you need for fix this https://imgur.com/qtgrZI9 error




回答2:


I had this same problem, solved it by setting squid to run in transparent mode, like this:

http_port 3128 transparent


来源:https://stackoverflow.com/questions/28331813/reverse-proxy-from-nginx-to-squid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!