配置文件詳細說明
工作了幾個月要開始做一些后台開發,免不了接觸nginx,以前一般只是簡單的使用,更多的分析內部模塊的具體實現,為了部署需要進一步掌握配置方法。
全局配置信息
#nginx worker進程運行用戶以及用戶組
user nobody nobody;
#nginx worker數量 worker_processes 4;
#全局錯誤日志文件,日志輸出級別有debug、info、notice、warn、error、crit(類似於Python中的logging) error_log logs/error.log notice;
#指定主進程id的存儲文件位置 pid logs/nginx.pid;
#指定一個nginx進程可以打開的最多文件描述符數目 worker_rlimit_nofile 65535;
#設定nginx的工作模式及連接數上限 events{ use epoll; #linux 服務器的優點所在 worker_connections 65536;#設定worker的最大連接數 }
worker_rlimit_nofile:理論值應該是最多打開文件數(ulimit -n)與nginx 進程數相除,但是nginx 分配請求並不是那么均勻,所以最好與ulimit -n 的值保持一致。
worker_connetions:每個工作進程允許最大的同時連接數(那么,這里是不是應該小於worker_rlimit_nofile)
(nginx最大的連接數:Maxclient = work_processes * worker_connections)
虛擬主機配置
server { listen 80; server_name domain.com *.domain.com; return 301 $scheme://www.domain.com$request_uri; } server { listen 80; server_name www.domain.com; index index.html; root /home/domain.com; }
在上面的配置信息中,server代表虛擬主機,而server_name用來設定虛擬主機匹配的域名,從而可以更具不同的域名來處理不同的請求內容,即監聽端口listen是相同的~
- 在第一個server中,該server只會匹配domain.com以及其子域名下的請求;
- 在第二個server中,只會匹配www.domain.com的域名請求;
server { listen 80 default_server; index index.html; root /var/www/default; }
Nginx 的虛擬主機是通過HTTP請求中的Host值來找到對應的虛擬主機配置,如果找不到呢?那 Nginx 就會將請求送到指定了 default_server 的 節點來處理,如果沒有指定為 default_server 的話,就跑到 localhost 的節點,如果沒有 localhost 的節點,那只好 404 了。
http配置
http {
#設定mime類型 include 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 logs/access.log main; sendfile on; #tcp_nopush on;
#長連接超時時間,單位是秒 keepalive_timeout 65; #gzip on;
#虛擬主機的配置 server {
#監聽端口 listen 80;
#域名可以有多個,用空格隔開 server_name localhost; #charset utf-8;#默認編碼 #access_log logs/host.access.log main; location / { root html; index index.html index.htm;
#設置訪問網段
allow 192.168.1.0/24;
deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
