阻止NGINX移除端口

我想在我的重写上动态地保留ServerName和Port:
让我们说防火墙将端口8081重定向到80.
因此,如果我使用“192.168.1.123/frontend”或“my.domain.tld:8081 / frontend”访问网络服务器,我应该重定向到“192.168.1.123/frontend/”或“my.domain.tld: 8081 /前端/”

如果我使用正常的重定向重写^(.* [^ /])$$1 / permanent;我通过端口8081访问端口被删除.
(我已经尝试过关闭port_in_redirect;)

我几乎使用默认配置:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name _;
        rewrite ^(.*[^/])$$1/ permanent;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location ~ \.php${
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
        }
}

谢谢你的期待!

解:
感谢NGINX邮件列表!
我用重写规则解决了这个问题:

if (-d $request_filename) {
    rewrite [^/]$$scheme://$http_host$uri/ permanent;
}

解决方法:

我终于找到了你已经描述过的问题的解决方案.我使用URL重写它,但它似乎有点矫枉过正.

因此,对于任何遇到相同问题的人来说,最干净的解决方案似乎是替换它:

proxy_set_header Host $host;

有了这个 :

proxy_set_header Host $http_host;

通过此设置,无论您使用防火墙配置,Nginx都会将端口保留在重定向中.

希望这可以帮助.干杯!

上一篇:从String PHP中删除前3个字符和后3个字符


下一篇:Cloud for Customer的第一个显示的work center是怎么加载和渲染的