nginx url自動(dòng)加斜杠及301重定向的問(wèn)題
nginx url自動(dòng)加斜杠問(wèn)題及301重定向,URL指向一個(gè)目錄并且在最后沒(méi)有包含斜杠,會(huì)301重定向跳轉(zhuǎn),添加server_name或修改訪問(wèn)重定向。
nginx url自動(dòng)加斜杠問(wèn)題及301重定向
內(nèi)部服務(wù)器使用nginx,做網(wǎng)站測(cè)試之用。不同域名使用端口號(hào)區(qū)分,如www用默認(rèn)的80端口,其它域名用81,82...
有時(shí)直接在地址欄敲網(wǎng)址,會(huì)發(fā)現(xiàn)跳轉(zhuǎn)到localhost.localdomain的情況。
比如858端口下有個(gè)hx目錄,這樣正常訪問(wèn):http://192.168.1.158:858/hx/
但如果少打了一個(gè)/,如:http://192.168.1.158:858/hx
就會(huì)自動(dòng)跳轉(zhuǎn)到:http://localhost.localdomain:858/hx/
經(jīng)分析是nginx自動(dòng)加斜杠的問(wèn)題:
在某些情況下(具體可參考 wiki.nginx.org),Nginx 內(nèi)部重定向規(guī)則會(huì)被啟動(dòng)。
例如,當(dāng)URL 指向一個(gè)目錄并且在最后沒(méi)有包含“/”時(shí),Nginx 內(nèi)部會(huì)自動(dòng)的做一個(gè) 301 重定向,這時(shí)會(huì)有兩種情況:
1、server_name_in_redirect on(默認(rèn)),URL 重定向?yàn)椋?server_name 中的第一個(gè)域名 + 目錄名 + /;
2、server_name_in_redirect off,URL 重定向?yàn)椋?原 URL 中的域名 + 目錄名 + /。
If server_name_in_redirect is on, then Nginx will use the first value of the server_name directive for redirects. If server_name_in_redirect is off, then nginx will use the requested Host header.
原配置,沒(méi)有加server_name:
server {
listen 858;
}
修改后:
server {
listen 858;
server_name 192.168.1.158;
}
或:
server {
listen 858;
server_name_in_redirect off;
}
此問(wèn)題解決。訪問(wèn)http://192.168.1.158:858/hx可以正常跳轉(zhuǎn)到http://192.168.1.158:858/hx/了。
分析:
服務(wù)器的hostname是localhost.localdomain,當(dāng)沒(méi)有設(shè)置server_name時(shí),server_name就變成hostname了。
默認(rèn)又是server_name_in_redirect on,因此原配置訪問(wèn)hx目錄時(shí),會(huì)重定向到localhost.localdomain/hx/了。
第一種修改方法,加了server_name,那就跳轉(zhuǎn)到server_name + 目錄名 + /,對(duì)了。
第二種修改訪問(wèn),重定向?yàn)椋涸L問(wèn)的URL+目錄名+/,也對(duì)了。
泛解析配置:
server{
listen 80;
server_name _;
}
如果有個(gè)phpcheck目錄,有人不小心鏈了http://www.plchome.org/phpcheck這樣一個(gè)鏈接,就會(huì)重定向到http://_/phpcheck/。
所以這種在沒(méi)法指定server_name的情況下,要加上server_name_in_redirect off。
server{
listen 80;
server_name _;
server_name_in_redirect off;
}
這時(shí),訪問(wèn)www.plchome.org/phpcheck,就會(huì)自動(dòng)并且正確的跳轉(zhuǎn)到www.plchome.org/phpcheck/了。
晚上升級(jí)一臺(tái)服務(wù)器的nginx版本時(shí),在changes里看到:
Changes with nginx 0.8.48 03 Aug 2010 *) Change: now the "server_name" directive default value is an empty name "". Thanks to Gena Makhomed. *) Change: now the "server_name_in_redirect" directive default value is "off".
從nginx 0.8.48起server_name_in_redirect已經(jīng)默認(rèn)為off了,不再需要指定了。
以上所述是小編給大家介紹的nginx url自動(dòng)加斜杠及301重定向的問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Nginx配置真實(shí)IP地址轉(zhuǎn)發(fā)的實(shí)現(xiàn)示例
在許多web應(yīng)用程序中,獲取客戶端的真實(shí) IP 地址非常重要,本文就來(lái)介紹一下Nginx配置真實(shí)IP地址轉(zhuǎn)發(fā)的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-11-11
Nginx反爬蟲(chóng)策略,防止UA抓取網(wǎng)站
目前網(wǎng)絡(luò)上的爬蟲(chóng)非常多,有對(duì)網(wǎng)站收錄有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots規(guī)則對(duì)服務(wù)器造成壓力,還不能為網(wǎng)站帶來(lái)流量的無(wú)用爬蟲(chóng),為防止網(wǎng)站有可能會(huì)被別人爬,通過(guò)配置Nginx, 我們可以攔截大部分爬蟲(chóng)2020-09-09
記一次nginx配置不當(dāng)引發(fā)的499與failover 機(jī)制失效問(wèn)題
近期在非高峰期也存在499超過(guò)告警閾值的偶發(fā)情況,多的時(shí)候一天幾次,少的時(shí)候則幾天一次,持續(xù)一般也就數(shù)分鐘,經(jīng)過(guò)和小伙伴的共同探究,最后發(fā)現(xiàn)之前對(duì)于499是客戶端主動(dòng)斷開(kāi)因而和服務(wù)端關(guān)系不大的想當(dāng)然認(rèn)知是錯(cuò)誤的,這里記錄一下2023-05-05
詳解nginx服務(wù)器http重定向到https的正確寫(xiě)法
本篇文章主要介紹了nginx服務(wù)器http重定向到https的正確寫(xiě)法 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用問(wèn)題
這篇文章主要介紹了使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用,本文通過(guò)幾個(gè)問(wèn)題解析幫助大家學(xué)習(xí)Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟的相關(guān)知識(shí),需要的朋友可以參考下2021-09-09
使用Docker實(shí)現(xiàn)Nginx反向代理
本文主要介紹了使用Docker實(shí)現(xiàn)Nginx反向代理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟
這篇文章主要介紹了CentOS7安裝Nginx并配置自動(dòng)啟動(dòng)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10

