Google上有豐富的 Nginx 的教程和樣本配置文件,但很多時候時候,配置這些是一些技巧,一直對大家很有幫助。
不要在您的主 nginx.conf 文件中配置所有的東西,你需要分成幾個較小的文件。您的同事會很感激你的。比如我的結構,我定義我的 upstream 的 pool 的為一個文件,和一個文件定義 location 處理服務器上其它的應用。
例子:
upstreams.conf
upstream cluster1 { fair; server app01:7060; server app01:7061; server app02:7060; server app02:7061; } upstream cluster2 { fair; server app01:7071; server app01:7072; server app02:7071; server app02:7072; }
locations.conf
location / { root /var/www; include cache-control.conf; index index.html index.htm; } location /services/service1 { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Pragma "no-cache"; proxy_pass http://cluster1/; } location /services/service2 { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Pragma "no-cache"; proxy_pass http://cluster2/service2; }
servers.conf
server { listen 80; include locations.conf; }
現在,你的 nginx.conf 看起來非常的干淨和簡單(仍然可以分開更多,來更包括文件,比如分離gzip的配置選項)
nginx.conf
worker_processes 4; worker_rlimit_nofile 10240; events { worker_connections 10240; use epoll; } http { include upstreams.conf; include mime.types; default_type application/octet-stream; log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time'; access_log /usr/local/nginx/logs/access.log custom; proxy_buffering off; sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/xml+rss image/svg+xml application/x-font-ttf application/vnd.ms-fontobject; gzip_disable "MSIE [1-6]."; # proxy cache config proxy_cache_path /mnt/nginx_cache levels=1:2 keys_zone=one:10m inactive=7d max_size=10g; proxy_temp_path /var/tmp/nginx_temp; proxy_next_upstream error; include servers.conf; }
這 nginx.conf 文件是使用了一些不太常見的配置選項,它值得指出其中一些重要的。