Nginx 上游阻止非默认端口

Nginx 上游阻止非默认端口

专家。

我正在尝试将 nginx/1.10.0 配置为在非标准端口上使用 ssl 终止的 2 个 https web 服务器的上游。

这是我当前在 sites-available/ 中的网站设置

upstream backend {
        ip_hash;
        server 172.31.16.1:8444;
        server 172.31.16.2:8444;
}
server {
        listen 80;
        listen 443 ssl;
        listen 8444 ssl;
        ssl on;
        server_name backend_1;
        access_log /var/log/nginx/access.log;
        error_log  /var/log/nginx/error.log;
        ssl_session_cache shared:SSL:5m;

#--------ssl certificates for fronend------------#
        ssl_certificate /etc/nginx/ssl/nginxSvr.crt;
        ssl_certificate_key /etc/nginx/ssl/nginxSvr.key;
        ssl_verify_client off;

        location / {
        proxy_pass https://172.31.16.1;
#       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ssl_certificate /etc/nginx/ssl/IPSUMCUICA.crt;
        proxy_ssl_certificate_key /etc/nginx/ssl/IPSUMCUICA.key;
        proxy_ssl_session_reuse off;
        }

它在不使用上游部分的情况下也能工作。但是当我将 proxy_pass 更改为代理密码 https://后端我收到 404 错误,并且https://后端:8444在浏览器中。

显然它尝试解析这个名称但失败了,可能是因为出现了一些错误,但在这种情况下错误日志是空的。欢迎提出所有建议。谢谢。

答案1

不知怎么的,我找到了解决方案。我在 location 指令中添加了 proxy_set_header Host $http_host;。现在初始配置可以正常工作了。

upstream backend {
        ip_hash;
        server 172.31.16.1:8444;
        server 172.31.16.2:8444; } 
server {
            listen 8444 ssl;
            server_name backend_1;
            access_log /var/log/nginx/access.log;
            error_log  /var/log/nginx/error.log info;
            ssl_session_cache shared:SSL:5m;

    ssl_certificate /etc/nginx/ssl/nginxSvr.crt;
    ssl_certificate_key /etc/nginx/ssl/nginxSvr.key;
    ssl_verify_client off;

    location / {
    proxy_pass https://backend;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_ssl_session_reuse off;
    proxy_set_header Host $http_host;
        }
}

相关内容