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

vla*_*lad 19 nginx proxy

是否可以将 Nginx 用作 HTTP/HTTPS 代理?

vla*_*lad 15

经过一些测试,我发现以下配置对我有用。

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 做得好!小提示。1:`听... default_server`。2: `server_name ""` 或 `server_name _`。2:`proxy_pass $scheme://$http_host`。限制:仅使用端口 80 向上游进行 poxying;不处理重定向本身。 (4认同)

ant*_*set 9

我认为简短的回答是否定的,它不是为正向代理编写的

更新

澄清我上面的陈述:

NGINX 从来没有考虑过正向代理——虽然它远程可能以某种方式 jerry rig 配置来做你想要它做的事情,但你必须了解以下限制:

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

目前未知的可能的其他考虑因素:

  • 可能对您的代理进行 DoS,因为它没有真正的细粒度访问控制/身份验证能力(nginx 支持不同的访问控制方法,但不清楚这在转发代理上下文中的行为方式)
  • 安装 nginx 的机器可能存在安全风险,因为可能存在未考虑的安全漏洞,因为使用方式并非旨在运行