我有一个启用了 SSL 的 nginx 服务器。由于它在不同的端口(而不是 443)上运行,因此有时它会接收纯 HTTP 请求而不是 HTTPS。我想为此设置一个重定向以自动替换该方案,我尝试了以下代码:
error_page 497 https://$host:$server_port$request_uri;
但是这里的问题是,当服务器在 VM 中运行并且端口被转发到不同的端口时,它会重定向到无效的端口(服务器从中获取请求)。
我的问题是:如何从请求中解析/获取端口,而不是从服务器接收请求的端口?
希望不要太晚(八个月!)。我自己也有类似的问题,要使用 nginx.conf 中的原始请求端口。
nginx $http_名称变量
$http_host
因此,如果有帮助,应该包含请求“主机”标头。例如本地主机:8020
这个问题几乎是这个问题的重复:
如何将端口 80 上的非 http 请求转发到另一个端口?
他们在端口 80 上接收非 HTTP 请求,您在端口 443 上接收非 HTTPS 请求。除此之外,这个想法是一样的。
Nginx 模块的存在是为了对 TCP 数据包做更多的事情:
http://nginx.org/en/docs/stream/ngx_stream_core_module.html
https://github.com/yaoweibin/nginx_tcp_proxy_module