nginx在二级目录访问需要加/才能访问的解决办法
nginx为什么在二级目录访问的时候要加/才能访问到
比如https://scout.dhhb.com:9443/bigScreen
要这样https://scout.dhhb.com:9443/bigScreen/才能访问到
不加最后那个/无法访问。
解决办法:
第一种(常见做法 【自动添加/】):
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
第二种(更佳的替代方法):
最佳方法在nginx.conf 在http或server加入
optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关
官方http://wiki.nginx.org/NginxHttpCoreModule#optimize_server_names说明
Note: this directive is deprecated in nginx 0.7.x, use server_name_in_redirect instead.
备注:这指令nginx 0.7.x已不支持,用server_name_in_redirect代替
optimize_server_names off;
#optimize_server_names 已不支持了 我在nginx 1.6 加上这个会报错的
所以是:
http{
...
server_name_in_redirect off;
...
}
备注: 第二种方案本人测试不可用,但是还是记录了,本人也是采用了第一种方案,自动添加/,如下,在某个路由或者在serve里面加都可以:
location ^~/bigScreen {
alias /opt/dist/bigScreen;
index index.html;
try_files $uri $uri/ /bigScreen/index.html;
# 自动添加 /
if (-d $request_filename) {
rewrite ^/(.*)([^/])$ http://$host:9443/$1$2/ permanent;
}
}