4.Nginx的目錄與配置語法 之 默認配置語法

前提:

我們在"2. Nginx的目錄與配置語法 之 安裝目錄"筆記中有解析nginx安裝目錄,

/etc/nginx/nginx.conf????????(類型:配置文件? ? ?作用:Nginx主配置文件)

/etc/nginx/conf.d/default.conf? ??????(類型:配置文件? ? ?作用:Nginx默認主配置文件,安裝時自動生成的)

而且在"3.Nginx的目錄與配置語法 之 安裝編譯參數(shù)"筆記中也有記載了安裝編譯參數(shù)

--conf-path=/etc/nginx/nginx.conf (nginx的配置文件)

所以,我們直接進入主題,查看/etc/nginx/nginx.conf (nginx的配置文件),并且直接在配置文件中用注釋的方式來說明

nginx默認配置語法

說明:/etc/nginx/nginx.conf (nginx的配置文件)的內容有3大塊配置,下面分為(1,2,3)來記錄

[root@localhost nginx]# cat nginx.conf

1.全局性或者對服務級別的配置 :

這塊是配置文件最前面的一些內容,這些內容主要是配置了nginx的進程,日志文件等對全局性的或者對服務級別的配置

#注釋: user 設置nginx服務的系統(tǒng)使用用戶? (這是設置了nginx 的worker進程所使用的用戶,默認是nginx用戶,當然我們也可以改成其他的用戶,但是一般沒有必要的情況就保持nginx這個普通用戶的進程就可以了)

user? nginx;

#注釋:worker_processes? 工作進程數(shù)? (這一塊其實是跟我們nginx的一個多進程的方式是有關系的,?nginx的優(yōu)勢 I/O復用在worker_processes的設置下會啟用多個進程來進行增大nginx的連接數(shù)和并發(fā)處理,這個的數(shù)量一般和CUP的數(shù)量保持一致就好了,一個CUP處理一個nginx進程,在優(yōu)化nginx的時候可以考慮根據(jù)服務器的cpu數(shù)量配置一下)

worker_processes? 1;

#注釋:?error_log? ?nginx的錯誤日志??

error_log? /var/log/nginx/error.log warn;

#注釋:??pid? ? nginx服務啟動時候pid (存放nginx.pid的位置,在nginx服務啟動的時候,會把nginx服務本身的pid記錄到這個文件里面去,方便我們進行查找和操作系統(tǒng)的管理)

pid? ? ? ? /var/run/nginx.pid;

2.事件模塊配置

events模塊是一個事件的模塊,events模塊中包含nginx中所有處理連接的設置

events {

????#注釋:use? 使用epoll的I/O 模型?(值得的注意的是,根據(jù)不同的系統(tǒng)內核,Nginx會使用不同的事件驅動機制,所以? Nginx默認配置沒有指定use參數(shù),后續(xù)優(yōu)化Nginx時可以考慮直接配置好使用的I/O 模型驅動機制

? ? #use epoll;

? ? #注釋:worker_connections 每個進程允許的最大連接數(shù)量? ( 個人認為是每一個worker進程能并發(fā)處理的最大連接數(shù),包含所有連接數(shù)。理論上worker_connections? 設置越大越好,一般在企業(yè)級nginx應用優(yōu)化的時候worker_connections參數(shù)也是必須要去調節(jié)的, 當然,一定要按照自己的實際情況而定,也不能設置太大,不能讓CPU跑滿100% , 按反向代理模式下最大連接數(shù)的理論計算公式:? ?最大連接數(shù) = worker_processes * worker_connections/4 , 生產環(huán)境中worker_connections 建議值最好超過9000

? ? worker_connections? 1024;

}

#http是協(xié)議界別(個人理解為nginx在處理http的請求會按照http這塊的配置去處理)

http {

? ? #引入子配置文件,設置http協(xié)議的Content-type與擴展名對應關系

? ? include? ? ? /etc/nginx/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? /var/log/nginx/access.log? main;

? ? #

? ? sendfile? ? ? ? on;

? ? #tcp_nopush? ? on;

????#定義客戶端與服務端的超時時間 , 單位秒

? ? keepalive_timeout? 65;

? ? #gzip? on;

? ? #手動注釋:這里使用?include 語法包含了/etc/nginx/conf.d/ 目錄下符合*.conf 的文件

? ? include /etc/nginx/conf.d/*.conf;

}

再來看看/etc/nginx/nginx.conf(nginx的配置文件)的http模塊中引入的/etc/nginx/conf.d/*.conf的文件內容

[root@localhost ~]# ls /etc/nginx/conf.d/*.conf;

/etc/nginx/conf.d/default.conf

[root@localhost ~]# cat /etc/nginx/conf.d/default.conf

#server 配置(個人理解 , 不一定程序的運行是這個順序 , 但是可以這樣理解 , server , 顧名思義 , server即服務 , 當nginx處理http請求時 , 要匹配使用哪個server , 肯定要從每個server不同的配置參數(shù)去區(qū)分了 , 比如listen端口 , 比如server_name)

server {

? ? #當前server監(jiān)聽的端口號 , 當訪問localhost:80時 , 當前server監(jiān)聽的端口號就是80 , 這個server的端口號 , 符合nginx處理localhost:80這個http請求的listenl參數(shù)

? ? listen? ? ? 80;

? ? #當前server監(jiān)聽的服務名稱 ,?當訪問localhost:80時 , 當前server監(jiān)聽的服務名稱就是localhost ,?符合nginx處理localhost:80這個http請求的server_name參數(shù)

? ? server_name? localhost;

? ? #charset koi8-r;

? ? #access_log? /var/log/nginx/host.access.log? main;

? ? #一個server里面允許配置多個location , location配置則匹配當前server指向的文件路徑

? ? #這里默認配置location的 "/"參數(shù)指的是 "匹配全部路徑"

? ? location / {

? ? ? ? #?root定義的是文件目錄路徑

? ? ? ? root? /usr/share/nginx/html;

? ? ? ? #index定義的是默認文件 (如訪問location時,上面的root已經定義了文件目錄路徑了,這里定義的是默認文件 , 所以會在/usr/share/nginx/html目錄中找index.html文件,如果沒有再找index.htm文件 , 順序就是從左到右)

? ? ? ? index? index.html index.htm;

? ? }

? ? #error_page? 404? ? ? ? ? ? ? /404.html;

? ? # redirect server error pages to the static page /50x.html

? ? #

? ? #定義錯誤碼? (這里定義了500 502 503 504狀態(tài)碼指向"/50x.html"路徑)

? ? error_page? 500 502 503 504? /50x.html;

? ? #這里默認配置location的 "/50x.html"參數(shù)指的是 "匹配如http://192.168.58.100/50x.html這樣的http請求,然后在"/usr/share/nginx/html"目錄中找到"50x.html"文件返回"

? ? location = /50x.html {

? ? ? ? root? /usr/share/nginx/html;

? ? }

? ? # proxy the PHP scripts to Apache listening on 127.0.0.1:80

? ? #

? ? #location ~ \.php$ {

? ? #? ? proxy_pass? http://127.0.0.1;

? ? #}

? ? # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

? ? #

? ? #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;

? ? #}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容