访问时:http : //example.com/somefolder- > http://example.com:8080/somefolder
我已经试过了:
http {
port_in_redirect off;
有任何想法吗?
port_in_redirect
从更改为时on
,off
您可能需要重新启动它。
port_in_redirect
根本不起作用
访问时:http : //example.com/somefolder- > http://example.com:8080/somefolder
我已经试过了:
http {
port_in_redirect off;
有任何想法吗?
port_in_redirect
从更改为时on
,off
您可能需要重新启动它。
port_in_redirect
根本不起作用
Answers:
我只是遇到了同样的问题,port_in_redirect off;
并为我实际工作,只需确保在server {}
块内使用它即可。
server {
listen 8080;
server_name example.com;
port_in_redirect off;
autoindex on;
location / {
root /var/www/example.com;
index index.html;
}
}
port_in_redirect
在里面location
。
如果有人在nginx反向代理设置后面有apache时仍然遇到此问题,则可以尝试ff:
位置 / { proxy_redirect关闭; proxy_set_header主机$ host:$ server_port; #<-这个解决了我的问题 proxy_set_header X转发的主机$ http_host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8083 ; }
我的设置是让Apache监听127.0.0.1:8083,并让Nginx代理请求它。
我的nginx + Apache设置也遇到了同样的问题。Apache似乎正在重定向到它自己的端口(在8080上运行),而nginx在端口80上。
在我的设置中,这为普通网址设置了无限重定向循环:
proxy_set_header Host $host:80; # Force port 80
而是将返回的数据绑定到端口80,如下所示:
proxy_bind $host:80; # Bind to port 80
这是我的nginx服务器块:
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name _; # Wildcard server
location / {
proxy_bind $host:80; # Bind to port 80 << THIS IS THE MAGIC
proxy_pass http://localhost:8080;
proxy_set_header Host $host; # Pass host header
proxy_set_header X-Real-IP $remote_addr; # Preserve client IP
proxy_set_header X-Forwarded-For $remote_addr;
}
}
通过此通配符设置,所有nginx没有服务器块的请求都将传递到Apache。
万一其他人遇到了这个问题-此处的文章:http : //www.linuxquestions.org/questions/linux-server-73/strange-nginx-redirects-without-trailing-slash-930876/为我解决了这个问题。
我必须在代理中添加一个额外的标头。
确保已将“主机”设置为,$http_host
并且还将设置为X-Forwarded-Host
,$http_host
如下所示:
proxy_redirect off;
proxy_set_header Host $http_host; # <-- make sure this is $http_host
proxy_set_header X-Forwarded-Host $http_host; # <-- make sure you set this
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 8k;
proxy_busy_buffers_size 64k;
http://wiki.codemongers.com/NginxHttpCoreModule#port_in_redirect
syntax: port_in_redirect [ on|off ]
default: port_in_redirect on
context: http, server, location
希望这是您想要的。
我有一个类似的问题。
也许您应该使用指令proxy_set_header
来设置标头的主机和位置。在我的配置中,我添加了proxy_set_header Location $host:80
;并且所有请求现在都返回端口80。
我建议将其添加到您的服务器块中:
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
这是当您转到example.com/wp-admin时,它将转到example.com/wp-admin,而不是example.com:8080/wp-admin/,如果您使用的是CloudFlare DNS,它将说该网站已关闭。
我正在使用Ubuntu,Nginx和Varnish,它现在可以完美运行,而不是禁用port_in_redirect。
要添加,请确保在以下情况下重新启动nginx:
sudo service nginx restart