nginx 使用 URL 中的非标准端口重定向多个服务器名称

nginx 使用 URL 中的非标准端口重定向多个服务器名称

我有一个端点https://app1.company.com:5555,并且希望能够使用 URL 中的端口号浏览网站的所有页面,并且还能够在不使用端口号的情况下浏览,比如说其他的 server_namehttps://dev-app1.company.com

例如https://app1.company.com:5555/tag/generalhttps://dev-app1.company.com/categories/ulmighty应该都可以

无论何时,我如何让 nginx 重定向并在端口存在时保留端口名称?

目前有这个

server {
    listen 80;
    server_name dev-app1.company.com app1.company.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name dev-app1.company.com app1.company.com;

    location ^~ / {

        rewrite ^/(.*)$ /$1 break;
        proxy_pass http://localhost:9090;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

但问题是它不使用端口号进行重定向,我希望它能够使用 url 中的端口号进行重定向,只要服务在该端口上运行并且它在该5555端口上运行

更新:

应用程序已在监听端口 5555,我可以在这里访问https://app1.company.com:5555

当我有这个的时候

server {
    listen 80;
    server_name app1.company.com;

    return 301 https://app1.company.com:5555$request_uri;
}

但现在我想添加更多服务器名称,这样我也可以访问其他服务器名称而无需任何端口

答案1

可以通过为标准和非标准端口设置额外的服务器块来解决这个问题

这是最终设置

server {
    listen 80;
    server_name dev-app1.company.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name dev-app1.company.com;

    location ^~ / {

        rewrite ^/(.*)$ /$1 break;
        proxy_pass http://localhost:9090;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}
server {
    listen 80;
    server_name app1.company.com;

    return 301 https://app1.company.com:5555$request_uri;
}

server {
    listen 443 ssl;
    server_name app1.company.com;

    location ^~ / {

        rewrite ^/(.*)$ /$1 break;
        proxy_pass http://localhost:9090;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

相关内容