如何使用Nginx作为HTTP / HTTPS代理服务器?

是否可以使用Nginx作为HTTP / HTTPS代理

经过一些testing,我发现为我工作的以下configuration。

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

此configuration仅适用于HTTP,不适用于HTTPS。

我认为简短的回答是否定的,这不是写给前锋代理

UPDATE

澄清我上面的陈述:

NGINX从来没有用前向代理编写 – 尽pipe远程可能以某种方式利用configuration来执行你想要的操作,你将不得不了解以下限制:

  • caching支持几乎不存在(使用代理的主要原因之一)
  • 不能用于80端口以外的任何事情(即不能通过它login到cPanel框)
  • 不支持基于SSL的stream量
  • 不支持标准的代理头和httpcaching头(我的理解是,这些只是通过
  • 不支持其他支持代理服务器的协议 – 例如VPN等

可能的其他考虑在这个时候是未知的:

  • 可能把你的代理做为细粒度的访问控制/authentication的实际能力(nginx支持不同的访问控制方法,但是不清楚它在代理上下文中的performance如何)
  • 安装nginx的机器可能存在安全风险,因为可能存在可能的安全漏洞,因为这些安全漏洞无法以其devise运行的方式使用

如果你想使用HTTP / HTTPS代理,你应该使用Squid。 它被写成这样做。 Nginx被编写为一个反向代理和负载平衡器,但不是一个正向代理。