如何将Nginx用作HTTP / HTTPS代理服务器?[关闭]


Answers:


14

经过一些测试,我发现以下配置适用于我

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

此配置仅适用于HTTP,不适用于HTTPS。


4
做得好!很少的提示。1 :listen ... default_server。2:server_name ""server_name _。2 :proxy_pass $scheme://$http_host。局限性:仅使用端口80为上游提供氧气;不处理重定向本身。
亚历山大·阿扎罗夫

$ scheme仅在虚拟主机也侦听https的情况下才有用-但是您有中间风险和https证书错误来应对...两者都是要考虑的重大安全问题
anthonysomerset 2014年

8

我认为简短的答案是“否”,它不是为正向代理而编写的

更新

为了澄清我的上述声明:

NGINX从来没有考虑过前向代理的编写-尽管要想以某种方式杰瑞绑定该配置以执行您想要的操作,则必须远程理解以下限制:

  • 几乎不存在缓存支持(使用代理的主要原因之一)
  • 无法用于端口80流量以外的任何其他流量(即,不通过端口登录cpanel盒)
  • 不支持基于SSL的流量
  • 不支持标准代理标头和http缓存标头(我的理解是,这些只是通过
  • 不支持其他支持代理服务器的协议,例如VPN等

目前尚不知道的其他可能考虑因素:

  • 可能无法对您的代理进行DoS,因为它没有细粒度的访问控制/身份验证的真正能力(nginx支持不同的访问控制方法,但尚不清楚它在正向代理上下文中的行为)
  • 安装了Nginx的机器可能面临的安全风险,因为可能由于未按特定的方式使用而无法考虑安全漏洞


也许我的答案应该更清楚了,它不是为进行转发代理而设计的-猴子补丁工作将不会提供完整的代理支持,例如对非标准(端口80)端口的代理请求
anthonysomerset 2014年

3

如果要使用HTTP / HTTPS代理,则应使用Squid。正是这样做的。Nginx被编写为充当反向代理和负载平衡器,但不充当正向代理。


我知道鱿鱼/哎呀/ tinyproxy /等等。我问这个问题的学术兴趣的缘故
弗拉德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.