nginx進階設定
我們選擇了起個比較重要的設定方式,讓您了解nginx的設定方法
一、設定錯誤頁面跳轉
還記得我們遇到網頁找不到時出現底下的畫面嗎?
這就是404錯誤的預設畫面,當然這是不好的,我們可以設定的更好。
1. 使用error_page
在根目錄下建立一個叫做404.html的網頁
內容
然後nginx設定檔的srever段再加上 error_page 404 /404.html;
重新啟動nginx就會產生作用了
同樣的方式針對限制目錄(https://itopnet.blogspot.com/2019/06/108-ubuntunginxphpmariadb.html)
也可能產生錯誤,我們也可以一併使用
設定成
error_page 404 403 /404.html
2. 使用try_files 解決404的錯誤
原先是這樣的
location / { try_files $uri $uri/ =404; }
改成
location / { try_files $uri $uri/ /404.html; } 效果就是找不到網頁時就會顯示 /404.html內容,但是拒絕連線403就是就是原來的畫面了
在wordpress設定時,我們使用了
location / { try_files $uri $uri/ /index.php?$args =404; }
這種方式,當找不到網頁時,就顯示 /index.php, 並且可以用
$_SERVER['REQUEST_URI'] 取得參數
$_SERVER['REDIRECT_STATUS'] 取得狀態
至於?$args的意思呢?
例如 要查詢 /find/?s=abcd&kind=2
但是不存在 /find/
就會變成去執行 /index.php?s=abcd&kind=2
但是怎樣知道使用者下達的是 /find/?s=abcd&kind=2 而不是 index.php?s=abcd&kind=2
答案就是 使用 $_SERVER['REQUEST_URI'] 去取得
二 轉成子目錄
如果要把 a.nlps.tyc.edu.tw
變成 b.nlps.tyc.edu.tw/a/ 下的網站
最簡單的方式就是修改 b.nlps.tyc.edu.tw 增加如下
location ^~ /a/ { alias /home/www/a.nlps.tyc.edu.tw/;
}
此時 http://b.nlps.tyc.edu.tw/a/index.html 是正確的
但是 http://b.nlps.tyc.edu.tw/a 就會顯示 404找不到
http://b.nlps.tyc.edu.tw/a/ 則顯示 403拒絕
我們可以加上
index index.html;
http://b.nlps.tyc.edu.tw/a/ 就會正常顯示
http://b.nlps.tyc.edu.tw/a 仍然是找不到
我們可以改用
location /a/ { proxy_pass http://a.nlps.tyc.edu.tw/; } 這樣都可以正常看到喔
三、rewrite
在 /home/www/a.nlps.tyc.edu.tw/目錄下建立a.html,內容是a.html
http://a.nlps.tyc.edu.tw/a.html 會正常的顯示出來
如果們要
http://a.nlps.tyc.edu.tw/x 也顯示a.html這個檔案內如
可以用
rewrite /x /a.html;
# 把 /html/*.html => /post/*.html ,301定向 rewrite ^/html/(.+?).html$ /post/$1.html permanent; # 把 /search/key => /search.html?keyword=key rewrite ^/search\/([^\/]+?)(\/|$) /search.html?keyword=$1 permanent;
參考:
https://www.itread01.com/content/1548269294.html
http://seanlook.com/2015/05/17/nginx-location-rewrite/
https://blog.csdn.net/hyk_lk/article/details/65936042
https://blog.csdn.net/chunyuan314/article/details/55056539
https://xuexb.com/post/nginx-url-rewrite.html
沒有留言:
張貼留言