前提:
我們在"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;
? ? #}
}