日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx三部曲之一【配置文件详解】

發布時間:2025/7/14 Nginx 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx三部曲之一【配置文件详解】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


????????初學Nginx,感覺Nginx配置文件中指令以及參數各類繁多,總結成博客備忘,也便廣大Linux愛好者學習交流,因為時間原因,總結的不夠全面后續會不斷完善此博文,筆者水平有限,如有疏漏不妥之處,還請不吝賜教!


????以下內容部分參考互聯網和 南非螞蟻(高俊峰)所著的 ?《高性能Linux服務器構建實戰運行監控、性能調優與集群應用》一書,


????感謝開源前輩以及Linux先行者提供的寶貴資料,如有侵權之處,請馬上通知,本人立即刪除;



#user??nobody;??#指定?Nginx?Worker進程運行用戶以及用戶組,默認由?nobody運行; worker_processes??1;???#指定Nginx要開啟的進程數,默認情況下是1,如果存在多顆CPU,設置為和CPU同樣的數量即可;


# 全局錯誤日志位置及PID文件位置:

#error_log??logs/error.log;? #error_log??logs/error.log??notice;?? #error_log??logs/error.log??info; #pid??logs/nginx.pid;events?{????????#?用來設定Nginx的工作模式及連接數上限;worker_connections??1024;???用于定義Nginx每個進程的最大連接數,默認為12024;#?并發總數是?worker_processes?和?worker_connections?的乘積#?即?max_clients?=?worker_processes?*?worker_connections#?進程的最大連接數受Linux系統進程的最大打開?文件數限制,在執行操作系統命令"ulimit?-n?65536"后?worker_connections的設置才會生效;}http?{include???????mime.types;????#?設定mime類型,類型由mime.type文件定義;?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;??#訪問日志記錄位置???并使用main格式記錄

? ??

????log_format:Nginx的HttpLog模塊指令,用于指定Nginx日志的輸出格式,main 為此日志格式名稱;

? ? $remote_addr:客戶端IP地址

? ? $remote_user:如果需要客戶端登陸才能訪問,記錄客戶端使用哪個用戶登陸;

? ? $time_local:訪問時間與時區;

? ? $request:用戶的原始請求URL,與http協議(包含整個請求符);

? ? $status:狀態碼,成功即為200

? ? $body_bytes_sent:發送給客戶端的主體內容大小

? ? $http_referer:從哪個頁面鏈接跳轉過來

? ? $http_user_agent:客戶端瀏覽器類型

? ? $http_x_forwarded_for:客戶端的IP地址


$remote_addr與$http_x_forwarded_for的區別:

????????通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址;

? ? ? ?

????client_max_body_size??20m;#?允許客戶端請求的最大單個文件字節數(通過Nginx上傳單個文件大小);client_header_buffer_size??32k;#?指定來自客戶端請求頭的headerbuffer大小,對于大多數請求1KB緩沖區大小已經足夠,如果自定義了消息頭或有更大的cookie,可以增加緩沖區大小,此處定義為32KB;large_client_header_buffers??4??32k;#?用來指定客戶端請求中較大的消息頭緩存最大數量和大小,4代表個數,128K代表大小,最大緩存為4個128KB;#?nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會使用large_client_header_buffers來讀取如果設置過小HTTP頭/Cookie過大?會報400?錯誤nginx?400?bad?request?求行如果超過buffer,就會報HTTP?414錯誤(URI?Too?Long)nginx接受最長的HTTP頭部大小必須比其中一個buffer大,否則就會報400的HTTP錯誤(Bad?Request)。


? ? ?

????sendfile????????on;#?開啟高效文件傳輸模式,?指定nginx?是否調用?sendfile?函數(zero?copy?方式)來輸出文件#?對于普通應用,必須設為?on,#?如果用來進行下載等應用磁盤IO重負載應用,可設置為?off,#?以平衡磁盤與網絡I/O處理速度,降低系統的uptime.tcp_nopush?????on;#?此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用tcp_nodelay????on;keepalive_timeout??0;?keepalive_timeout??65;????#?此處將保持時間設置為?65;#?用于設置客戶端連接保持活動的超時時間,開啟長連接以后,超過這個時間服務器會自動關閉這個連接;client_header_timeout?10;#?設置客戶端請求頭讀取超時時間,如果超過時間客戶端還沒有發送任何數據,Nginx將返回?"Request?time?out?(408)"?錯誤;client_body_timeout??10;#?設置客戶端請求主體讀取超時時間,默認為60。超過這個時間,客戶端沒有發送任何數據,Nginx將返回?"Request?time?out?(408)"錯誤;


????send_timeout?????????10;#?用于指定響應客戶端的超時時間,超時僅限于兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連接;proxy_connect_timeout?90;?#?后端服務器連接的超時時間_發起握手等候響應超時時間proxy_read_timeout?180;#?連接成功后等候后端服務器響應時間其實已經進入后端的排隊之中等候處理(也可以說是后端服務器處理請求的時間)proxy_send_timeout?180;#?后端服務器數據回傳時間_就是在規定時間之內后端服務器必須傳完所有的數據proxy_buffer_size?256k;#?設置從被代理服務器讀取的第一部分應答的緩沖區大小,通常情況下這部分應答中包含一個小的應答頭,默認情況下這個值的大小為指令proxy_buffers中指定的一個緩沖區的大小,不過可以將其設置為更小proxy_buffers?4?256k;#?設置用于讀取應答(來自被代理服務器)的緩沖區數目和大小,默認情況也為分頁大小,根據操作系統的不同可能是4k或者8kproxy_busy_buffers_size?256k;????proxy_temp_file_write_size?256k;#?設置在寫入proxy_temp_path時數據的大小,預防一個工作進程在傳遞文件時阻塞太長proxy_temp_path?/data0/proxy_temp_dir;


????注意:此下的所有設置只有在編譯時安裝了? HttpGzip 模塊才會被啟用:

????????

????????#gzip??on;???#gzip_min_length????1k;#gzip_buffers????4????16k;#gzip_http_version????1.1;#gzip_comp_level????2;#gzip_types???text/plain??application/x-javascript??text/css??application/xml;#gzip_vary????on;


???????? ? ? # gzip 用于設置開啟或關閉gzip模塊,"gzip on"表示 開啟gzip壓縮;

? ? ? ? ? ? ?# gzip_min_length 設置 允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-length中獲

? ? ? ? ? ? ?取,默認值為0,不管頁面多大都進行壓縮,建議更改成大于1K,不然會越壓越大;

? ? ? ? ? ? ?# gzip_buffers?表示申請4個單位為16K的內存作為壓縮結果流緩存,默認值是申請與原始數據大小相

? ? ? ? ? ? ?的內存空間來存儲gzip壓縮結果;

? ? ? ? ? ? ?# gzip_http_version 設置識別HTTP協議版本,默認為1.1,目前大部分瀏覽器已經支持gzip解壓,使

? ? ? ? ? ? ?默認即可;

? ? ? ? ? ? ?# gzip_comp_level 指定gzip壓縮比,范圍1-9 1壓縮比最小,處理速度快,9壓縮比最大,傳輸速度

?????????????快節約帶寬,但處理起來慢,也較消耗CPU資源;

? ? ? ? ? ? ?# gzip_types 指定壓縮哪些文件,無論是否指定,默認情況下 text/html 類型總會被壓縮

? ? ? ? ? ? ?# gzip_vary 可以讓前端緩存服務器緩存經過gzip壓縮的頁面;



????????server{????#?用來標志虛擬主機開始listen????80;?#?指定虛擬主機監聽在哪個套接字上;server_name????192.16.12.188??www.nginx.com;??#?設置?IP地址或域名,多個域名間用空格分開index??index.html??index.htm??index.jsp;?#?設置?訪問的默認首頁地址root??/web/www/;????#?指定虛擬主機的網頁根目錄,這個目錄可是相對路徑,也可是絕對路徑;charset?gb2312;??#?設置?網頁默認編碼格式;access_log??logs/nginx.access.log??main;#?設定本虛擬主機的訪問日志}




? ? Nginx地址匹配相當強大,location 支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指定實現Nginx對動靜態網頁的過濾處理:

????????

????匹配方法:

????????=:精確匹配,把用戶請求的URI,與各location匹配

????????~:正則表達式模式匹配,匹配時區分字符大小寫

????????~*:正則表達式模式匹配,不區分字符大小寫

????????^~:做URI的前半部分匹配,匹配時不檢查正則表達式;


????匹配規則:

????????匹配優先級:精確匹配(=)、^~、~ 和 ~*、最后由不帶符號的URL進行左側匹配

????????當被多個location所匹配時,這些優先級還一樣,就會被第一個location所匹配;



????此處有三個小例子:


????1、通過location指令來對網頁URL進行分析處理,~ 代表使用正則表達式 ?.* 代表以任意開頭任意長度,.代表本身的意義,可以是擴號內的任何結尾,也就是說所有擴展名為.gif、.jpg、.jpeg、.png、.bmp、.swf的靜態文件都交給Nginx處理;

????????location?~?.*\.(gif|jpg|jpeg|png|bmp|swf)$??{root????/web/www/www.nginx.com;??#?匹配到哪個目錄?expries??30d;????#?靜態文件過期時間}

????

????2、將upload和html下的所有文件都交給Nginx來處理,前提是upload和html目錄包含在/web/www/www.nginx.com目錄中

????????location?~?^/(upload|html)/??{root??/web/www/www.nginx.com;expries??30d;}


????3、location 將所有以 .jsp 為后綴的文件都交給本機的 8080 端口處理;

??????

??????location?~?.*.jsp$?{index??index.jsp;proxy_pass??http://localhost:8080;}




轉載于:https://blog.51cto.com/linuxzj/1596823

總結

以上是生活随笔為你收集整理的Nginx三部曲之一【配置文件详解】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。