2019年6月26日 星期三

108資安-nginx進階設定

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 

沒有留言:

張貼留言