nginx如何配置文件「nginx配置php環境」

在前面已經演示了nginx的安裝以及常用命令,這一章節重點講解nginx的配置文件。

1. nginx配置文件路徑:

不同安裝方式,nginx的文件存放路徑也有所不同。

源碼編譯安裝方式:在安裝目錄下的conf目錄下,比如我的安裝目錄是/usr/local/nginx,那麼他的配置文件就在/usr/local/nginx/conf目錄下。

yum安裝方式:在/etc/nginx/目錄(主配置文件)與/etc/nginx/conf.d目錄下。

2. nginx配置文件的結構:

通常源碼安裝的nginx的配置文件,會是下面這種結構,yum安裝的有細微差異(大致是一樣的,就是server是通過include引用的獨立配置文件)。

...
events {
        ...
}

http {
    ...
    server {
        ....
        location {
            root html;
            ...
        }
    }
}

nginx的配置指令可以分為兩大類:指令塊單個指令

指令塊就是像events { },http { },server { }等,單獨指令就是像root html;這樣的。

nginx規定指令塊可以嵌套,如http塊中可以嵌套server指令,server塊中可以嵌套location指令,指令可以同時出現在不同的指令塊,如root指令可以同時出現在http、server和location指令塊,需要注意的是在location中定義的指令會覆蓋server,http的指令。

3. 代碼解析:

3.1 全局配置:

user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    use epoll;
    worker_connections  1024;
}
user  :指定nginx的工作進程的用戶及用戶組,默認是nobody用戶。

worker_processes   :指定工作進程的個數,默認是1個。具體可以根據伺服器cpu數量進行設置,
                    比如cpu有4個,可以設置為4。如果不知道cpu的數量,可以設置為auto。
                    nginx會自動判斷伺服器的cpu個數,並設置相應的進程數。
                    
error_log   :設置nginx的錯誤日誌路徑,並設置相應的輸出級別。
             如果編譯時沒有指定編譯調試模塊,那麼 info就是最詳細的輸出模式了。
             如果有編譯debug模塊,那麼debug時最為詳細的輸出模式。這裡設置為默認就好了。
             
pid     :指定nginx進程pid的文件路徑。

events  :這個指令塊用來設置工作進程的工作模式以及每個進程的連接上限。
use :用來指定nginx的工作模式,通常選擇epoll,除了epoll,還有select,poll。
worker_connections      :定義每個工作進程的最大連接數,默認是1024。
                         客戶端最大連接數,就要考慮有幾個工作進程了,兩者相乘就是的。
                         當nginx作反向代理時,需要除以2.
                    
                        ps:進程的最大連接數受Linux系統進程的最大打開文件數限制。
                        比如ulimit -n 默認時1024,如果不改變這個值,
                        即使修改工作進程為2048,也無法處理這麼多連接。
                        http指令塊

3.2 http指令塊:

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    client_max_body_size 20m;
    client_header_buffer_size 32K;
    large_client_header_buffers 4 32k;
    Sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        ...
        location {
            root html;
            ...
        }
    }

}
include     :主要是可以引用指定的配置文件。
default_type        :設定默認類型為二進位流,也就是當文件類型未定義時使用這種方式,
                    例如在沒有配置PHP環境時,Nginx是不予解析的,
                    此時,用瀏覽器訪問PHP文件就會出現下載窗口。
log_format      :定義日誌文件格式,並默認取名為main,可以自定義該名字。
                 也可以通過添加,刪除變數來自定義日誌文件的格式。
                 
access_log      :定義訪問日誌的存放路徑,並且通過引用log_format所定義的main名稱設置其輸出格式。
sendfile    :用於開啟高效文件傳輸模式。將tcp_nopush和tcp_nodelay兩個指令設置為on用於防止網路阻塞;
keepalive_timeout       :設置客戶端連接保持活動的超時時間。在超過這個時間之後,伺服器會關閉該連接。
gzip  on        :開啟壓縮功能,減少文件傳輸大小,節省帶寬。
client_max_body_size        :用來設置允許客戶端請求的最大的單個文件位元組數
client_header_buffer_size       :用於指定來自客戶端請求頭的header_buffer大小。
                                 對於大多數請求,1K的緩衝區大小已經足夠,
                                 如果自定義了消息頭或有更大的Cookie,可以增加緩衝區大小。這裡設置為32K
large_client_header_buffers     :用來指定客戶端請求中較大的消息頭的緩存最大數量和大小,
                                「4」為個數,「128K」為大小,最大緩存量為4個128K
client_header_timeout       :設置客戶端請求頭讀取超時時間。如果超過這個時間,
                             客戶端還沒有發送任何數據,Nginx將返回「Request time out(408)」錯誤
client_body_timeout     :設置客戶端請求主體讀取超時時間。
                         如果超過這個時間,客戶端還沒有發送任何數據,Nginx將返回「Request time out(408)」錯誤,默認值是60
send_timeout        :指定響應客戶端的超時時間。這個超時僅限於兩個連接活動之間的時間,
                    如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連接。

3.3 server指令塊:

server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
         index  index.html index.htm;
        location /
         {
            root   html;
            ...
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #location ~ \.php$ {
                ...
        #}
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
server      :用來定義虛擬主機。
listen      :設置監聽埠,默認為80埠
server_name     :域名,多個域名通過逗號隔開
Charset     :設置網頁的默認編碼格式
access_log      :指定該虛擬主機的獨立訪問日誌,會覆蓋前面的全局配置。
index        :設置默認的索引文件
location       :定義請求匹配規則。
error_page      :定義訪問錯誤返回的頁面,凡是狀態碼是500 502 503 504 都會返回這個頁面。

3.4 location指令塊:

#location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
location ~ \.php$     :凡是以php結尾文件,都會匹配到這條規則。
root        :php文件存放的目錄
fastcgi_pass        :指定php-fpm進程管理的ip埠或者unix套接字
fastcgi_index   :指定php腳本目錄下的索引文件
fastcgi_param       :指定傳遞給FastCGI伺服器的參數
location ~ /\.ht        :凡是請求類似.ht資源,都拒絕。

這是比較基本的nginx配置,更加詳細的配置需要結合企業的生產需求,遇到了在加以說明。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/281162.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-21 13:16
下一篇 2024-12-21 13:16

相關推薦

發表回復

登錄後才能評論