本篇文章給大家帶來了關于nginx的相關知識,其中主要給大家解析nginx全配置,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。
#==========================nginx全局配置==========================# #?指定?nginx?進程運行的用戶,這里是?nginx,默認為nobody。 user?nginx;?? #?指定?nginx?使用多少個?worker?進程處理請求,這里使用了?auto,表示根據?CPU?核心數自動分配。 worker_processes?auto;?? #?指定?nginx?主進程的?PID?文件路徑。 pid?/run/nginx.pid;?? #指定錯誤日志文件的路徑 error_log?/var/log/nginx/error.log;?? #==========================nginx全局配置==========================# ##==========================events==========================## #?事件模塊的配置 events?{ ????#?默認值512,設置每個?worker?進程的最大連接數。 ????worker_connections??1024;???? ????#?默認值off,控制是否在一次事件循環中accept多個連接請求。啟用?multi_accept?可以減少?CPU?的使用和系統調用的次數,也可能會導致每個請求的響應時間增加 ????multi_accept?on;? ????#?使用連接互斥鎖進行順序的accept()系統調用,防止驚群現象發生,默認為on ????accept_mutex?on;??? ????#?如果一個進程沒有互斥鎖,它將延遲至少多長時間。默認情況下,延遲是500ms? ????accept_mutex_delay?500ms ????#?指定事件驅動模塊,默認值select,這個驅動模塊在大量連接時,性能較差,這里使用了?epoll。?可選select|poll|kqueue|epoll|resig|/dev/poll|eventport ????use?epoll;?????? ????#?設置?accept?互斥鎖等待時間。 ????accept_mutex_delay?500ms;? ????#?實驗模塊,僅在?FreeBSD?下可用,aio?啟用則使用異步I/O,不啟用則使用同步I/O,默認不啟用 ????aio?threads;?#?指定異步?I/O?模塊,這里使用了?threads。 ????aio_write?on;?#?啟用異步寫入操作。 ????aio_read?on;?#?啟用異步讀取操作。 ????#?事件驅動模塊?use?epoll時配置 ????epoll_events?1024;?#?默認值為?512,即每次事件循環最多處理?512?個事件。 ????epoll_event_connections?512;?#?默認值為?2048,即每個事件最多處理?2048?個連接。 ????epoll_timeout?1s;?#?默認值為?0,即?epoll?模塊不會超時,等待事件的時間取決于操作系統。 ????//事件驅動模塊?use?kqueue時配置,僅在?FreeBSD?下可用 ????kqueue_events?1024; ????kqueue_event_connections?512; ????kqueue_timeout?1s; } ##==========================events==========================## ##==========================http==========================## #?主要用于處理?HTTP?請求和響應,包括路由、反向代理、緩存、日志等功能。 http?{ ????#?導入?MIME?類型的配置文件。 ????include??/etc/nginx/mime.types;??? ????#?定義默認的?MIME?類型,默認為text/plain? ????default_type??application/octet-stream;? ????#?定義訪問日志格式?main ????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;? ????#?指定錯誤日志文件的路徑和格式。 ????error_log??/var/log/nginx/error.log?main;??? ????#?默認開啟,直接把文件內容從磁盤讀入內核緩沖區,尤其是在處理大文件時,效果更為明顯。 ????sendfile?on;?? ????#?每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。 ????sendfile_max_chunk?100k;?? ????#?客戶端與服務器之間的連接超時時間,默認值為?75s。 ????keepalive_timeout?75;?? ????#?在一個持久連接上最多允許的請求數量,默認值為?100。 ????keepalive_requests?100;? ????#?是否開啟?Gzip?壓縮,默認值為?off。 ????gzip?on;? ????gzip_types?text/plain?text/css?application/json?application/javascript?application/xml;?#?壓縮文件類型列表 ????gzip_min_length?20;?#?只壓縮大于該長度的文件,單位為字節,默認值為?20。 ????gzip_buffers?4?8k;?#?第一個參數表示緩沖區的數量,第二個參數表示每個緩沖區的大小。?默認值為?4?8k。 ????#?當服務器返回錯誤碼時,可以顯示指定的錯誤頁面。 ????error_page?error_page?404?/404.html;?? ????###==========================upstream=========================### ????#?upstream?模塊用于配置反向代理服務器組,可以將客戶端請求轉發到多臺服務器進行處理,從而實現負載均衡和高可用性。 ????upstream?backend??{??? ??????#?簡單的循環負載均衡 ??????server?backend1.example.com; ??????server?backend2.example.com; ??????#?使用權重進行負載平衡 ??????server?backend3.example.com?weight=3;?#指定服務器的權重,缺省為?1,可以是任意正整數。 ??????server?backend4.example.com?weight=2; ??????#?使用IP?Hash值進行權重進行負載平衡,確保來自同一?IP?的請求總是發送到同一服務器。 ??????ip_hash; ??????#?用最少的連接進行負載均衡,動態地將請求發送到最空閑的服務器。 ??????least_conn; ??????#?使用服務器響應時間進行負載平衡,將請求發送到響應時間最短的服務器。 ??????fair; ??????#?根據請求?URL?的哈希值進行負載平衡 ??????hash?$remote_addr?consistent; ??????#?隨機發送到服務器 ??????random; ??????#?為backend分配一個共享內存區域。 ??????zone?backend_zone?64k; ??????#?指定與后端服務器的?TCP?連接復用數,缺省為?1。 ??????keepalive?16;? ??????#?指定與后端服務器的?TCP?連接最大請求數,超過此數量,連接將關閉并重新建立新連接。默認為?100。 ??????keepalive_requests?100; ??????#?指定與后端服務器的?TCP?連接空閑超時時間,默認為?75?秒。 ??????keepalive_timeout?60s; ????} ????###==========================upstream=========================### ????###==========================server=========================### ????server?{ ??????#?監聽端口 ??????listen?80; ??????#?指定服務器的主機名。它可以是域名、IP?地址或*匹配任何主機名,也可以配置多個域名 ??????server_name?example.com; ??????#?根目錄 ??????root?/var/www/example.com; ??????#?限速?每秒4K ??????set?$limit_rate?4k; ??????#?當用戶訪問example.com?或?example.com/?時 ??????location?/?{ ??????#?指定用于提供文件的回退機制。如果請求的文件不存在,nginx將嘗試返回fallback ????????try_files?index.html?index.htm?@fallback; ??????} ??????#?上面try?files?回退到這里 ??????location?@fallback?{ ?????????root??/var/www/error; ?????????index?index.html; ??????} ??????#?當用戶訪問example.com/api時 ??????location?/api?{ ????????#?反向代理到?http://backend/api;?本配置中?backend?是個負載均衡器 ????????proxy_pass?http://backend/api; ??????} ??????#?當用戶訪問example.com/images時 ??????location?/images/?{ ????????#?alias?看起來類似于?root?指令,但文檔根目錄沒有改變,只是用于當前請求的路徑。? ????????#?/images/top.gif?將返回?/var/www/images/top.gif ????????alias?/var/www/images/; ????????#?設置緩存時間為1天,原理是Header?設置Cache-Control ????????expires?1d; ????????#?添加header ????????add_header?Cache-Control?"public"; ??????} ??????location?~?.php$?{ ????????include?fastcgi_params;?? ????????fastcgi_index?index.php;?? ????????#?使用fastcgi協議?轉發到?phpfpm的unix?socket文件?phpfpm?和?nginx?同一臺機器才可以這么配置 ????????fastcgi_pass?unix:/var/run/php/php7.x-fpm.sock; ????????#?使用fastcgi協議?轉發到某個服務器某個端口 ????????fastcgi_pass?127.0.0.1:9000;?? ????????#?使用fastcgi協議?轉發到負載均衡器 ????????fastcgi_pass?http://backend/ ????????deny?127.0.0.1;??#拒絕的ip ????????allow?172.18.5.54;?#允許的ip??????????? ??????} ??????#?SSL?配置?監聽443 ??????listen?443?ssl; ??????#?證書路徑 ??????ssl_certificate?/etc/ssl/certs/example.com.crt; ??????#?證書私鑰 ??????ssl_certificate_key?/etc/ssl/private/example.com.key; ??????#?HTTP/2?配置?監聽443 ??????listen?443?ssl?http2; ??????#?設置安全header ??????add_header?X-Content-Type-Options?"nosniff"?always; ??????add_header?X-Frame-Options?"SAMEORIGIN"?always; ??????add_header?X-XSS-Protection?"1;?mode=block"?always; ????} ????###==========================server=========================### } ##==========================http==========================##
推薦學習:《Nginx教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END