Nginx入門指南

shkstart發表於2022-02-16

這份指南描述了怎樣啟動和停止nginx以及重新載入配置,說明了配置檔案的結構以及如何啟動nginx以輸出靜態內容,怎樣設定代理伺服器 和怎樣連線FastCGI應用。

nginx及其各模組的工作方式取決於配置檔案。預設情況下,配置檔名為nginx.conf,並放置在/usr/local/nginx/conf、/etc/nginx或/usr/local/etc/nginx.目錄中。

啟動的時候直接執行nginx.exe或者nginx。如果nginx已經啟動,就可以直接使用引數-s 來進行呼叫執行,具體的使用語法如下:

nginx -s signal

stop —指令一經發出,直接停止

quit — 等待所有的請求完成,再停止

reload — 重新載入配置檔案nginx.conf

reopen —重新開啟日誌檔案

注:此命令應在啟動nginx的同一使用者下執行。

一旦主程式收到reload的訊號,它就會檢查新的配置檔案語法,並且嘗試應用這個新的配置檔案。如果執行成功,主程式會啟用一個新的工作程式,然後給原來工作程式傳送一個訊號,讓它原來的工作程式停止。如果執行失敗,主程式會回滾到原來的配置檔案並繼續使用原來的配置檔案進行執行。原來的工作程式接收到停止命令之後,它會停止新的連線請求,但是當前已經建立的連線請求會等待其完成後終止。之後舊程式就會退出。

為了得到正在執行的ngixn程式列表,可以通過ps指令得到:

ps -ax | grep nginx

配置檔案結構

放在任何上下文之外的配置檔案中的指令被認為是在主上下文 中。event和http指令駐留在主上下文中,server駐留在http中,location駐留在server中。

提供靜態資源內容

首先,建立一個資料夾/data/www 把有內容的index.html 檔案放到裡面。並且建立/data/images資料夾,在裡面放一些圖片。

通常,配置檔案包含幾個server塊指令,這些塊指令通過不同的服務名字(server names)分發監聽(distinguished listen)在不同的埠。一旦nginx決定哪個伺服器處理請求,它就會根據server塊指令中定義的location指令的引數匹配請求頭中指定的URI。

這個location塊詳述了與URI請求相匹配的“/”字首。如果匹配到請求,這個 URI 會被轉到 root 指令的路徑。,也就是說,所有請求檔案都會直接請求到本地檔案系統的/data/www路徑。如果有多個匹配的location塊,nginx會選擇最長字首的那個。上面提供的location塊是長度只有1的最短字首,因此,其它所有的location塊都匹配失敗的話,這個location塊指令才會被使用。

這個會匹配以/images開頭的請求(/也會匹配請求,只不過這個字首更短)。

一個正常的伺服器配置檔案監聽在80埠上,並且可以在本機上成功訪問。以/images/開頭請求的URI地址,伺服器會從/data/images資料夾下面返回對應的檔案。例如,請求/data/images/example.png這個檔案,nginx伺服器會返回images/example.png。如果伺服器沒有這個檔案會返回404 錯誤。不是以/images/開頭的請求,就會被對映到/data/www 資料夾。例如, 請求nginx/data/www/some/example.html,伺服器會響應some/example.html 這個檔案。

一些情況下( ***),沒有達到預期的效果,你可以嘗試通過檢視access.log和 error.log (通常在/usr/local/nginx/logs或者/var/log/nginx) 日誌檔案來找原因。

我們能配置一個基本的代理伺服器,它的 ***圖片檔案請求和其它的全部請求都會被髮送到代理伺服器上。本例中,兩個伺服器定義在一個nginx例項。

這個簡單的伺服器會監聽8080埠(之前, 由於使用了標準埠80,因此尚未指定listen指令)並且對映所有的請求到本地檔案系統的/data/up1資料夾。建立這個資料夾並放一個檔案index.html。需要注意的是 server上下文就是這個根指令的位置。例如 當選擇用於提供請求的location塊指令不包括根指令時,使用這樣的根指令(root /data/up1)。

我們修改第二個location指令塊,這個指令塊會把當前的/images字首請求對映到/data/images資料夾中,為了匹配更多的圖片型別請求,location塊指令修改如下:

location ~ \.(gif|jpg|png)$ {

root /data/images;

}

nginx在匹配location請求的時候,首先檢查location 指令的特殊字首,最長字首(),最後檢查正則。如果這個請求匹配到正則,ngixn會選中這個location,否則,會跳過找到最前的一個()。

這個伺服器將會過濾字尾為 .gif, .jpg, 或者 .png 的然後分發到/data/images資料夾(通過在root中新增URI引數) ,並且其它的請求會被代理到上面的server配置()中/。

這裡有更多的 more 指令可以使用在代理連線配置中。

使用FastCGI伺服器的最基本的nginx配置包括使用fastcgipass 指令而不是proxypass指令,以及fastcgiparam指令來設定傳遞給FastCGI伺服器的引數。假設FastCGI服務在localhost:9000可以訪問,以上面一部分的配置為基礎,替換proxypass指令為fastcgipass,並且修改引數為 localhost:9000。在PHP中, SCRIPTFILENAME引數為定義的指令碼名稱 QUERY_STRING引數為被請求的引數**,最終的配置如下:

server {

location / {

fastcgi_pass localhost:9000;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param QUERY_STRING $query_string;

}

location ~ \.(gif|jpg|png)$ {

root /data/images;

}

}

<1p white-space:normal;background-color:#ffffff;line-height:26px="" !important;"="" style="overflow-wrap: break-word; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 宋體, Arial; white-space: normal; background-color: rgb(255, 255, 255); box-sizing: border-box; outline: 0px; color: rgb(77, 77, 77); overflow: auto hidden;">這個伺服器設定會路由所有除了靜態圖片的請求,通過FastCGI協議代理到localhost:9090代理伺服器上。


版權宣告:轉載請附上原文出處連結及本宣告。下載相關視訊學習資料到尚矽谷官方網站。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27721058/viewspace-2855945/,如需轉載,請註明出處,否則將追究法律責任。