導航:首頁 > 文件管理 > nginx靜態文件配置文件

nginx靜態文件配置文件

發布時間:2023-08-19 15:40:29

① Nginx配置文件詳解

說到該指令 ,首先得闡述一下什麼是所謂的 「驚群問題」,可以參考 WIKI網路的解釋。就Nginx的場景來解釋的話大致的意思就是:當一個新網路連接來到時,多個worker進程會被同時喚醒,但僅僅只有一個進程可以真正獲得連接並處理之。如果每次喚醒的進程數目過多的話,其實是會影響一部分性能的。

所以在這里,如果accept_mutex on,那麼多個worker將是以串列方式來處理,其中有一個worker會被喚醒;反之若accept_mutex off,那麼所有的worker都會被喚醒,不過只有一個worker能獲取新連接,其它的worker會重新進入休眠狀態。

用rewrite轉發的話,url會發生變化的,那就用proxy_pass吧,於是添加了如下的配置:

在現有環境的nginx里添加這段配置之後,訪問卻始終轉不過去,查看nginx日誌也只能看到是404信息,並沒有更多定位問題的信息。檢查了許久也沒找到原因,於是重新裝了一台新nginx,裡面只加上面這段配置,結果nginx是能夠轉發成功的,這說明單獨來看這條location的配置是沒有問題的,很有可能是現有環境nginx里的某些配置影響到了這個轉發。

為了定位問題原因,我將aaa.example.com虛擬主機下的其他配置注意注釋掉來調試,最後發現當注釋掉proxy_set_header Host $http_host ;這條配置之後,就能成功轉發了。這才注意到是反向代理配置的問題。現有環境中原有的配置也不能隨便刪掉,上網查了下原因,找到下面這種解決方案:

即,在location裡面添加一條proxy_set_header Host http_host時,則不改變請求頭的值,所以當要轉發到bbb.example.com的時候,請求頭還是aaa.example.com的Host信息,就會有問題;當Host設置為$proxy_host時,則會重新設置請求頭為bbb.example.com的Host信息。

另外,關於proxy_pass轉發url的參數,可以通過在location中用rewrite來做,所以完善後的配置如下:

在location用rewrite改變了URI之後,proxy_pass將使用改變後的URI。上面例子(.*)是將所有參數傳給 1會拼接在 http://bbb.example.com 後面。

先來看下proxy_set_header的語法

允許重新定義或者添加發往後端伺服器的請求頭。value可以包含文本、變數或者它們的組合。 當且僅當當前配置級別中沒有定義proxy_set_header指令時,會從上面的級別繼承配置。 默認情況下,只有兩個請求頭會被重新定義:

當匹配到/customer/straightcustomer/download時,使用crmtest處理,到upstream就匹配到crmtest.aty.sohuno.com,這里直接轉換成IP進行轉發了。假如crmtest.aty.sohuno.com是在另一台nginx下配置的,ip為10.22.10.116,則$proxy_host則對應為10.22.10.116。此時相當於設置了Host為10.22.10.116。如果想讓Host是crmtest.aty.sohuno.com,則進行如下設置:

如果不想改變請求頭「Host」的值,可以這樣來設置:

但是,如果客戶端請求頭中沒有攜帶這個頭部,那麼傳遞到後端伺服器的請求也不含這個頭部。 這種情況下,更好的方式是使用$host變數——它的值在請求包含「Host」請求頭時為「Host」欄位的值,在請求未攜帶「Host」請求頭時為虛擬主機的主域名:

此外,伺服器名可以和後端伺服器的埠一起傳送:

如果某個請求頭的值為空,那麼這個請求頭將不會傳送給後端伺服器:

nginx配置項,裡面的配置項有代理https,http,代理靜態文件,H5分發,代理TCP連接,能滿足大多數搭建測試環境所要用的nginx的情況,大家碰到要使用nginx的時候可以參考下

② nginx配置文件詳解

一、安裝Nginx
在安裝Nginx之前,需確保系統已經安裝了gcc、 openssl-devel、 pcre-devel和zlib-devel軟體庫。

其中, –with-http_stub_status_mole 可以用來啟用 Nginx 的 NginxStatus 功能,以監控 Nginx 的運行狀態。

二、Nginx的配置文件結構
Nginx的配置文件nginx.conf位於其安裝目錄的conf目錄下。

nginx.conf由多個塊組成,最外面的塊是main,main包含Events和HTTP,HTTP包含upstream和多個Server,Server又包含多個location。

main(全局設置)、server(主機設置)、upstream(負載均衡伺服器設置)和 location(URL匹配特定位置的設置)。

1、main塊設置的指令將影響其他所有設置。

2、server塊的指令主要用於指定主機和埠。

3、upstream指令主要用於負載均衡,設置一系列的後端伺服器。

4、location塊用於匹配網頁位置。

這四者之間的關系式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。

在這四個部分當中,每個部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、HttpGzip Static模塊和Http Addition模塊等。

三、Nginx的全局配置

events事件指令是設定Nginx的工作模式及連接數上限:

use是個事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。

其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選worker_connections也是個事件模塊指令,用於定義Nginx每個進程的最大連接數,默認是1024。

最大客戶端連接數由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections。

在作為反向代理時,max_clients變為:max_clients = worker_processes * worker_connections/4。

進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令「ulimit -n 65536」後worker_connections的設置才能生效。

四、下面配置Nginx的HttpGzip模塊。這個模塊支持在線實時壓縮輸出數據流。

通過/opt/nginx/sbin/nginx -V命令可以查看安裝Nginx時的編譯選項,由輸出可知,已經安裝了HttpGzip模塊。

五、負載均衡配置

下面設定負載均衡的伺服器列表:

upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度演算法來實現客戶端IP到後端伺服器的負載均衡。

在上面的設定中,通過upstream指令指定了一個負載均衡器的名稱cs.com。這個名稱可以任意指定,在後面需要的地方直接調用即可,Nginx的負載均衡模塊目前支持4種調度演算法。

六、server虛擬主機配置

下面介紹對虛擬主機的配置。

建議將對虛擬主機進行配置的內容寫進另外一個文件,然後通過include指令包含進來,這樣更便於維護和管理。

server標志定義虛擬主機開始,listen用於指定虛擬主機的服務埠,server_name用來指定IP地址或者域名,多個域名之間用空格分 開。index用於設定訪問的默認首頁地址,root指令用於指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。

Charset用於 設置網頁的默認編碼格式。access_log用來指定此虛擬主機的訪問日誌存放路徑,最後的main用於指定訪問日誌的輸出格式。

七、location URL匹配配置

URL地址匹配是進行Nginx配置中最靈活的部分。 location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。使用location URL匹配配置還可以實現反向代理,用於實現PHP動態解析或者負載負載均衡。

以下這段設置是通過location指令來對網頁URL進行分析處理,所有擴展名以.gif、.jpg、.jpeg、.png、.bmp、.swf結尾的靜態文件都交給nginx處理,而expires用來指定靜態文件的過期時間,這里是30天。

八、StubStatus模塊配置

StubStatus模塊能夠獲取Nginx自上次啟動以來的工作狀態,此模塊非核心模塊,需要在Nginx編譯安裝時手工指定才能使用此功能。

stub_status設置為「on」表示啟用StubStatus的工作狀態統計功能。access_log 用來指定StubStatus模塊的訪問日誌文件。auth_basic是Nginx的一種認證機制。

auth_basic_user_file用來指定認證的密碼文件,由於Nginx的auth_basic認證採用的是與Apache兼容的密碼文件,因此需要用Apache的htpasswd命令來生成密碼文件。

然後輸入兩次密碼後確認之後添加用戶成功。

要查看Nginx的運行狀態,可以輸入http://ip/NginxStatus,輸入創建的用戶名和密碼就可以看到Nginx的運行狀態。

Active connections表示當前活躍的連接數,第三行的三個數字表示 Nginx當前總共處理了34561個連接, 成功創建次握手, 總共處理了354399個請求。

最後一行的Reading表示Nginx讀取到客戶端Header信息數, Writing表示Nginx返回給客戶端的Header信息數,「Waiting」表示Nginx已經處理完,正在等候下一次請求指令時的駐留連接數。

在最後這段設置中,設置了虛擬主機的錯誤信息返回頁面,通過error_page指令可以定製各種錯誤信息的返回頁面。在默認情況下,Nginx會在主目錄的html目錄中查找指定的返回頁面。

特別需要注意的是,這些錯誤信息的返回頁面大小一定要超過512K,否者會被ie瀏覽器替換為ie默認的錯誤頁面。

閱讀全文

與nginx靜態文件配置文件相關的資料

熱點內容
smartdraw使用教程 瀏覽:257
dnf90版本劍宗流派 瀏覽:856
怎樣把抖音視頻做成文件 瀏覽:688
波斯王子2下載蘋果 瀏覽:831
qq消息發送圖片超鏈接 瀏覽:998
配置文件查看redis版本 瀏覽:650
為什麼流量連接網路上不了網 瀏覽:716
write頭文件 瀏覽:631
合計表格橫線word 瀏覽:455
牧高笛冷山2air升級版區別 瀏覽:364
解鎖後程序啟動 瀏覽:107
網路轉播需要什麼資質 瀏覽:435
哪個投屏app 瀏覽:306
vba打開文件對話框 瀏覽:990
如何對excel文件加密不得修改 瀏覽:321
word編輯宏選中一段 瀏覽:458
微信怎麼上傳其他文件 瀏覽:220
互聯網數據分析需要哪些指標 瀏覽:844
eps包含鏈接文件 瀏覽:167
怎麼編程一些風景視頻 瀏覽:430

友情鏈接