1. 程式人生 > >nginx新手指引--文件翻譯

nginx新手指引--文件翻譯

官方文件源地址:http://nginx.org/en/docs/beginners_guide.html

目錄

開啟,停止,重新載入配置

配置檔案的結構

提供靜態內容

建立一個簡單的代理伺服器

建立FastCGI代理

nginx有一個主程序(master process)和很多個工作程序。主程序是讀取並評估(evaluate)配置,控制工作程序。工作程序處理請求。nginx是採用基於事件的模型。獨立於作業系統的機制,來高效的分發請求。工作程序的數量在配置檔案中有定義,它可以根據CPU核心數量自適應。

nginx和其模組的工作方式是由配置檔案來決定的。預設情況下配置檔案在

/usr/local/nginx/conf,

/etc/nginx,

/usr/local/etc/nginx

以上三個目錄中的一個,其檔名預設為nginx.conf

開啟,停止,重新載入配置

通過執行可執行檔案來開啟nginx。可通過 -s 引數呼叫可執行檔案,語法如下:

nginx –s signal

其中signal可為如下命令:

stop:快速關閉

quit:優雅的關閉,

nginx –s quit

會等待工作程序完成當前請求,然後再關閉(該命令應該由開啟nginx的使用者執行)

reload:重新載入配置檔案

nginx –s reload

改變配置檔案是不會立即生效的,需要執行reload命令,或者重啟nginx

reopen:重新開啟日誌檔案

一旦主程序接收到reload配置的命令,它會做兩件事:1,檢查新配置檔案的語法是否正確有效,2. 應用新的配置。如果以上兩步成功,則主程序開啟新的工作程序併發送訊息給舊工作程序讓其關閉。(當工作程序接收到shut down的命令時,它會停止接收新的連線,並將當前所有請求執行完畢,然後退出程序。)如果以上兩步報錯,則主程序回退原來的改變,繼續原配置執行。

結束nginx程序的另一種方式,可藉助於Unix工具的kill命令。在這種情況下,結束訊號將直接把ngnx程序ID傳送給Unix程序處理。nginx的程序ID(nginx.pid)預設情況下在/usr/local/nginx/logs或者/var/run目錄下。舉個例子,如果主程序ID是1628,那麼就執行

kill –s QUIT 1628

使用ps命令可獲取所有執行的nginx程序,例如:

ps –ax | grep nginx

配置檔案的結構

nginx有許多模組構成,這些模組在配置檔案中都有指定的指令控制。這些指令分為簡單指令和塊指令。詳見配置。

提供靜態內容

一個重要的WEB伺服器功能就是提供檔案,例如圖片,靜態html頁面。你可以通過編輯配置檔案實現。

舉個例子:

1. 你先建立一個資料夾,路徑為/data/www,放置一個index.html檔案。然後建立一個/data/images路徑,然後放一些圖片在images資料夾內。

2. 開啟配置檔案,在預設配置檔案的

http {

    server {

    #這裡面

    }

}

對location進行修改。

配置檔案修改如下:

location / {

            root /data/www;

        }

location /images/ {

            root /data;

        }

3. 執行

nginx –s reload

4. 驗證

訪問靜態頁面時:

開啟瀏覽器,輸入http://你的公網IP /hello.html ,即可成功訪問

訪問圖片時:

開啟瀏覽器,輸入http://你的公網IP /images/2.gif ,即可出現對應圖片

訪問過程:

其實瀏覽器中輸入的Url, 在nginx中會先取到公網IP,再取到IP後面的路徑,然後匹配location中的路徑。

怎麼匹配呢?

將輸入URL的路徑與配置檔案中location後面的路徑匹配。例如我取到輸入url 是http://localhost/images/example.png,那麼nginx會在路徑中匹配到/image/ ,然後在匹配到的路徑前加上對應的root值,則實際訪問URL為http://localhost /data/images/example.png。

當所有location後面的路徑都無法匹配輸入URL的路徑時,則使用location後面的路徑為/的root值。例如,輸入URL是http://localhost/some/example.html時,實際訪問的路徑時http://localhost/data/www/some/example.html

建立一個簡單的代理伺服器

這是nginx最頻繁使用的一個功能。它起到的作用是:接收請求,轉發到對應的原始伺服器,獲得對應響應,併發送至客戶端。

舉個例子,配置一個基本的代理伺服器,作用是提供一些圖片等靜態檔案並轉發請求到伺服器

1. 在伺服器新增/data/upl路徑,並新增index.html頁面

2. 配置原始伺服器。在nginx配置檔案中新增server塊指令及其內容。

server {

    listen 8080;

    root /data/upl;

    location / {

    }

}

修改原來的server中的location引數,

location / {

            #root /data/www;

            proxy_pass http://127.0.0.1:8080/;

        }

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

            root /data/images;

            }

3. 儲存,並執行

nginx -s reload

4. 驗證

瀏覽器中訪問http://公網IP:8080或者http://公網IP:8080/index.html

 

nginx的工作過程:

nginx伺服器監聽80埠,當請求是圖片檔案時,則nginx的工作為提供靜態資源,其他的請求則轉發給伺服器的8080埠處理。伺服器8080埠,接收轉發來的URL並在路徑前加上root值,這就是實際訪問的URL。然後location中路徑的匹配,加上location的root值,等等同之前的一樣。

建立FastCGI代理

nginx可以轉發請求到FastCGI伺服器。FastCGI伺服器上面執行著由各種框架和程式語言編寫的應用。

和FastCGI搭配的最基本nginx配置:使用fastcgi_pass指令而不是proxy_pass;fastcgi_param指令用來設定傳遞到FastCGI伺服器的引數。

假設FastCGI伺服器是監聽的本地9000埠。則修改原來的server中的location引數,如下

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;
    }
}

其中,SCRIPT_FILENAME在PHP中用來描述指令碼名,QUERY_STRING用來傳遞請求引數。

修改後,依然執行

nginx –s reload

這樣nginx會通過FastCGI協議轉發所有非靜態圖片的請求到9000埠,為所有靜態圖片的請求提供資源。