Nginx的地址重寫
阿新 • • 發佈:2018-12-07
一、基礎知識
1、什麼是地址重寫?:
地址重寫就是獲得一個來訪的URL請求,然後改寫成伺服器可以處理的另一個URL的過程
2、地址重寫的好處:
(1)縮短URL,隱藏實際路徑提高安全性
(2)易於使用者記憶和鍵入
(3)易與被搜尋引擎收錄
3、關於Nginx伺服器的地址重寫主要用到的配置引數:
主要用到的配置引數是rewrite
rewrite regex replacement flag
rewrite 舊地址 新地址 [選項]
二、地址重寫(非跳轉位址列)
1)修改Nginx服務配置:
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
ndex index.html index.htm;
rewrite /a.html /b.html;
}
}
2)建立測試頁面
[[email protected] nginx]# echo aaa > /usr/local/nginx/html/a.html
[ [email protected] nginx]# echo bbb > /usr/local/nginx/html/b.html
3)重新載入配置檔案
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
4)測試
[[email protected] nginx]# curl http://127.0.0.1/a.html
bbb
三、地址重寫(位址列跳轉)
1)修改Nginx服務配置:
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf .. .. server { listen 80; server_name localhost; location / { root html; index index.html index.htm; rewrite /a.html /b.html redirect; } }
2)重新載入配置檔案
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#請先確保nginx是啟動狀態,否則執行該命令會報錯,報錯資訊如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3)客戶端測試(仔細觀察瀏覽器位址列的變化)
[[email protected] ~]# firefox http://127.0.0.1/a.html
實現curl和火狐訪問相同連結返回的頁面不同
1) 建立網頁目錄以及對應的頁面檔案:
[[email protected] ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html
[[email protected] ~]# mkdir /usr/local/nginx/html/firefox/
[[email protected] ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html
2) 修改Nginx服務配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
#這裡,~符號代表正則匹配,*符號代表不區分大小寫
if ($http_user_agent ~* firefox) { //識別客戶端firefox瀏覽器
rewrite ^(.*)$ /firefox/$1;
}
}
3)重新載入配置檔案
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#請先確保nginx是啟動狀態,否則執行該命令會報錯,報錯資訊如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
4)訪問測試
[[email protected] ~]# firefox http://192.168.4.5/test.html
[[email protected] ~]# curl http://192.168.4.5/test.html
地址重寫格式【總結】
rewrite 舊地址 新地址 [選項];
last 不再讀其他rewrite
break 不再讀其他語句,結束請求
redirect 臨時重定向
permament 永久重定向