一、問題描述
反向代理服務器,設置完成,網站為OA,ERP管理系統之類的網站。
用域名訪問登錄正常,選擇正常,一切正常。
異常:無法刷新,刷新頁面404,鏈接變成域名加port方式。port為反向代理給web服務器的訪問端口。
如原正常鏈接為:www.example.com/member
刷新異常后變為:
www.example.com:8088/member
二、問題檢查
發現鏈接后面加上 / 正常,不加則無法訪問,如:
www.example.com/member 無法刷新訪問。
www.example.com/member/ 可以刷新訪問。
三、問題解決
既然加斜杠 / 可以匹配,那么可以對不加斜杠 / 的URL進行重寫,末尾加上斜杠,然后重定向。
使用Nginx中ngx_http_rewrite_module。首先判斷請求資源是否為目錄類型 if ( -d $request_filename ) ,然后利用正則匹配替換,并用rewrite中permanent來重定向"301" (rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent)
在web服務器更新nginx配置,后面加上這段:
if (-d $request_filename){ rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; }
注:不是nginx代理服務器,是web服務器
vim /etc/nginx/nginx.conf
server {
listen 8088
server_name 192.168.10.183;
...
location / {
root /www;
if (-d $request_filename){
rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent;
}
index index.html index.htm;
}
...
}