NGINX配置文件學習筆記 Nginx 是一個很強大的高性能Web和反向代理服務器.
今天,本地服務無論如何也起不來,nginx的配置文件也看不懂,所以感覺很尷尬,于是拿出了一個小時的時間學習了一下NGINX的配置文件,現在做一下記錄. 打開原始的nginx.conf文件 其中user用來配置用戶或用戶組,如果不指定將會默認為nobody, 配置該參數的意義在于: 在linux中所有的存在均可視為文件,其存在權限問題,通過user指定的用戶主要是指定其woker PRocess 權限, Woker_processes用來指定nginx的進程數,默認值為1,我在一些資料上看到說建議設置為宿主機的cpu核心數. 當然如果我們的woker_processes設置的值為4,可以加上: Worker_cpu_affinity 0001 0010 0100 1000 這種方法可以將1-4進程分配給單獨的核運行,如果有第五個進程,則隨機分配. Woker_rlimit_nofile 4096 設置每一個進程的最大文件打開數,一般設置為進程最大連接數(woker_connections)的3-4倍即可.
這一塊用來定義全局的錯誤日志,日志的級別分為:[debug | info | notice | warn | error | crit ], 當然,一般情況下如果沒有特殊需求,使用默認即可.
pid屬性用來定義nginx進程文件存放的位置,一般使用默認即可.
Events模塊: 其中worker_connections定義了工作進程的最大連接數量,該值不能超過Woker_rlimit_nofile.
在理論上: 每臺nginx服務器的最大連接數=worker_processes*worker_connections; 當然events還有其他參數: Accept_mutex on:設置網絡連接序列化,防止驚群現象發生,該值默認為on. 驚群現象:http://www.tuicool.com/articles/Nbue2a 其原理為: 設置為ON以后,每個工作線程(worker)按串行的方式來處理連接,一個連接只會喚醒一個工作線程,其余線程繼續休眠,但是如果服務器吞吐量較大時,建立關閉該參數. http塊:設定http服務器,利用他的反向代理功能提供負載均衡支持. HTTP塊可以嵌套多個server,配置緩存代理,第三方模塊等. Include mime.types 定義MIME類型和后綴關聯的文件的位置.該文件處于nginx.conf同級目錄下.
其中部分內容如下:
Default_type application/actet-stream; 指定在mime.type文件中沒有定義到的后綴名處理方法,默認值為 text/plain. Sendfile on :表示是否使用OS的sendfile函數來傳輸文件,普通的應用建議設置為ON,IO負載重的應設為OFF,默認值為OFF. Tcp_nopush on: 如果sendfile設置為on,此處應該也設置為on,數據包會累積一下,再一起傳輸,可是適當的提高一些效率. Tcp_nodelay on 默認值為on小的數據 包不等待直接發送,其默認值為ON,當和tcp_nopush同時都為ON時,nginx會平衡這兩個功能. Keepalive_timeout 120; 設置長連接超時時間,注意此處單位為秒. Gzip on; 開啟gzip壓縮輸出. Gzip_min_length 1k; 最小壓縮文件大小 Gzip_buffers 4 16k; 壓縮緩沖區 Gzip_http_version 1.0; 壓縮版本,默認為1.1,但是如果前端是squid2.5請使用1.0. Gzip_comp_level 2; 壓縮等級 Gzip_type text/plain application/x-javascript text/CSS application/xml; 壓縮類型,默認包含text/html. Gzip_vary on; 可以使用upstream子模塊進行負載均衡服務器的定義. 格式為 upstream 服務名稱{ Server IP+端口; } 當然,一個upstream模塊,可以配置多個IP地址. 格式為: Upstream 服務名稱{ Server IP 地址+prot weight=3; Server IP 地址+prot weight=1; Server IP 地址+prot weight=2; } 這里的weight的值代表分配給所屬IP服務器的權重,該值將影響服務器的分配幾率;
Server模塊,虛擬主機的配置 在server模塊下: Listen 80; 表示將監聽80端口. Server_name wwwbaidu.com www.52panda.online;表示監聽的域名,域名可以有多個,中間使用空格隔開,域名可以使用正則匹配. Charset utf-8;設置訪問的語言編碼. Location { ##設置虛擬主機的基本信息 Root 目錄; 設置虛擬主機的網站根目錄 Index a.html b.php;設置虛擬主機默認訪問的網頁.
}
對/啟用反向代理. Proxy_pass 自定義的upstream名稱; 表示將使用該upstream提供服務.
worker_processes 1;##允許生成的進程數
error_log logs/error.log; ##錯誤日志 error_log logs/notice.log notice; ##通知日志 error_log logs/info.log info; ##提示日志 error_log logs/warn.log warn; ##告警日志 error_log logs/crit.log crit; error_log logs/alert.log alert; error_log logs/emerg.log emerg; error_log logs/debug.log debug;
events { worker_connections 1024; ##配置最大連接數 }
http { include mime.types; ##文件擴展名與文件類型映射表 default_type application/octet-stream; ##默認文件類型 ##自定義日志格式 log_format myLogFormat ‘
upstream 名稱 { ##該名稱對應server的location的proxy_pass server 127.0.0.1:8080; }
## 服務配置server { listen 80; ##監聽端口 server_name 域名; ##監聽地址
location 正則 { ##匹配滿足正則的請求進行下面處理 proxy_pass upstream 的名稱; proxy_redirect off ; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header REMOTE-HOST $remote_addr; }}}
新聞熱點
疑難解答