我googling了很多,发现了几个解决方法,但你必须定义每一个目录。
Apache正在监听的是8888(nginx的:80 – > localhost:8888)
任何想法如何解决这个问题,只是像文件夹一样正常转发?
我有一个与varnish和nginx类似的问题(端口80上的代理服务器在8080上监听nginx),需要添加“port_in_redirect off”。 … server_name_in_redirect需要保持,所以nginx知道它正在处理哪个主机。
以下应该做的伎俩,但它需要更多的思想/工作,因为一次只能使用一个位置块:
location ~ ^(.*[^/])$ { if (-d $document_root/$1) { rewrite ^(.*)$ $1/ permanent; } }
(未测试)
您可以在服务器部分设置“server_name_in_redirect”
server{ listen 80 default; server_name localhost; server_name_in_redirect off; ... ... }
这将做的伎俩;-)
HTH。
编辑:只是格式。
这是最适合我的魔法:
try_files $uri $uri/ @redirect; location @redirect { if ($uri !~ '/$') { return 301 $uri/$is_args$args; } }
这里的'if'语句是安全的: http : //wiki.nginx.org/IfIsEvil