我知道 NGINX 不应该用作转发代理,但我有这样做的要求......无论如何,显然让 http 作为转发代理并不难,但在尝试配置时会出现问题https。我生成了一些自签名证书,然后尝试连接到 https://www.google.com ,它给了我错误 ERR_TUNNEL_CONNECTION_FAILED。这个问题与我的证书有关,但我不知道如何解决这个问题。有谁知道如何实现这个功能吗?
这是我的配置
server {
listen 443 ssl;
root /data/www;
ssl on;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
resolver 8.8.8.8;
proxy_pass https://$http_host$uri$is_args$args;
}
}
NGINX不支持HTTPS正向代理的原因是它不支持CONNECT方法。但是,如果您有兴趣将其用作 HTTPS 转发代理,您可以使用 ngx_http_proxy_connect_module
我能够使用流模块通过此配置配置 SSL/TLS 转发代理。
stream {
upstream web_server {
server my_server_listening_on:443;
}
server {
listen 443;
proxy_pass web_server;
}
}
资源:
我知道这是一篇旧文章,但我认为最新的 nginx 发行版可能在 https 代理或流模块上有所改进。有没有人有办法让流模块工作,以便让 https 代理在 nginx 上工作?我们尝试了 Kenrick 上面提供的配置,但我们还尝试将流量重定向到 localhost:443 服务 - 换句话说,创建一个强制门户,以便任何 https 请求都重定向到代理服务器本身上的页面。
此时,我们很高兴能让 https 代理正常工作(即将请求传递到预期的网页)。我们收到“无法连接到主机”消息,并且连接被代理服务器断开.