Nginx常見問題

2022-09-09 12:54:13 字數 3566 閱讀 7060

目錄二、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 預設...