我想在我的重写上动态地保留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都会将端口保留在重定向中.
希望这可以帮助.干杯!