目錄二、nginx禁止ip訪問
三、nginx的include
四、nginx的root與alias
五、nginx調整上傳檔案大小
四、nginx try_file路徑匹配
四、nginx優雅顯示錯誤頁面
在開始處理乙個http請求時,nginx會取出header頭中的host變數,與nginx.conf中的每個server_name進行匹配,以此決定到底由哪乙個server來處理這個請求,但nginx如何配置多個相同的server_name,會導致server_name出現優先順序訪問衝突。
1.首先選擇所有的字串完全匹配的server_name。(完全匹配 www.mumusir.com)
2.選擇萬用字元在前面的server_name,如 *.mumusir.com
3.選擇萬用字元在後面的server_name,如 www.mumusir.*
4.最後選擇使用正規表示式匹配的server_name,如:~^www\.(.*)\.com$
5.如果全部都沒有匹配到,那麼將選擇在listen配置項後加入[default_server]的server塊
6.如果沒寫,那麼就找到匹配listen埠的第乙個server塊的配置檔案
當使用者通過訪問ip或者未知網域名稱訪問你得**的時候,你希望禁止顯示任何有效內容,可以給他返回500,目前國內很多機房都要求**關閉空主機頭,防止未備案的網域名稱指向過來造成麻煩
[root@web01 conf.d]# vim a.conf
server
[root@web01 conf.d]# vim a.conf
server
[root@web01 conf.d]# vim a.conf
server
一台伺服器配置多個**,如果配置都寫在nginx.conf主配置檔案中,會導致nginx.conf主配置檔案變得非常龐大而且可讀性非常的差。那麼後期的維護就變得麻煩。
假設現在希望快速的關閉乙個站點,該怎麼辦?
1.如果是寫在nginx.conf中,則需要手動注釋,比較麻煩
2.如果是include的方式,那麼僅需修改配置檔案的副檔名,即可完成注釋
include包含的作用是為了簡化主配置檔案,便於人類可讀。
inlcude /etc/nginx/online/*.conf #線上使用的配置
/etc/nginx/offline #保留配置,不啟用(下次使用在移動到online中)
[root@lb01 conf.d]# cat image.conf
server
}#使用root時,使用者訪問時,實際上nginx會找到/code/picture/1.jpg檔案
[root@lb01 conf.d]# cat image.conf
server
}#使用alias時,使用者訪問時,實際上nginx會找到/code/1.jpg檔案
server
}
在nginx使用上傳檔案的過程中,通常需要設定檔案大小限制,避免出現413 request entity too large
syntax: client_max_body_size size;
default: client_max_body_size 1m;
context: http, server, location
#也可以放入http層,全域性生效
server
nginx的try_file路徑匹配,nginx會按順序檢查檔案及目錄是否存在(根據 root 和 alias 指令設定的引數構造完整的檔案路徑),並用找到的第乙個檔案提供服務。在元素名後面新增斜槓 / 表示這個是目錄。如果檔案和目錄都不存在,nginx會執行內部重定向,跳轉到命令的最後乙個 uri 引數定義的 uri 中。
[root@web01 conf.d]# vim linux.try.com.conf
server }
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# echo "test try_file" > /code/index.html
[root@web01 conf.d]# vim linux.try.com.conf
server }
#訪問測試:
1.訪問網域名稱時 linux.try.com,返回的結果是 1.jpg
由於請求的是網域名稱,後面沒有 uri,那麼 $uri 匹配到的就是 "空",匹配不到內容的情況下,返回 1.jpg
2.訪問網域名稱 linux.try.com/index.html,返回的結果是 index.html
由於請求的是linux.try.com/index.html,$uri 匹配到的是 index.html,就返回相應內容
[root@web01 conf.d]# vim linux.try.com.conf
server }
#訪問測試:
1.訪問網域名稱 linux.try.com,返回的結果是 index.html
由於請求的是網域名稱,後面沒有 uri,那麼 $uri 匹配到的就是 "空",$uri 匹配不到內容的情況下,匹配 $uri/,匹配到的是 "空/",/ 配置的是 /code,那麼就回去請求code目錄下的 index.html
1)配置nginx
[root@lb01 conf.d]# vim linux.try.com.conf
server
location @j**a
}
2)安裝tomcat (j**a動態處理軟體)
[root@web01 ~]# yum install -y tomcat
3)測試
1.code目錄下游index.html的情況,訪問網域名稱正常顯示 index.html
2.把code目錄改名,訪問網域名稱,返回的時tomcat下面配置的頁面
[root@web01 conf.d]# vim linux.error.com.conf
server
}
[root@web01 conf.d]# vim linux.error.com.conf
server
}
[root@web01 conf.d]# vim linux.error.com.conf
server
}}
nginx常見問題
1 顯示的錯誤資訊是 413 request entity too large 原因是請求實體太長了。一般出現種情況是post請求時body內容post的資料太大了,如上傳大檔案過大 如post資料比較多 在伺服器的 etc nginx目錄中找到nginx.conf 找到http 段,修改或增加 c...
Nginx常見問題
1.在 apache 的寫法 rewritecond nginx.org rewriterule 在 nginx 可以對應寫成 server 但 nginx 作者更建議的方法是 server server f q 1.請教一下,nginx的rewrite規則怎麼寫?比如將 http rewrite為...
Nginx常見問題
nginx常見問題 nginx優化主要從配置檔案著手,常見優化引數如下 worker processes 與cpu核心數量一致 worker connections 每個worker最大併發連線數 server tokens 伺服器版本號資訊 client header buffer size 預設...