1. 程式人生 > >Nginx的地址重寫

Nginx的地址重寫

一、基礎知識

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 永久重定向