常见的 Nginx 设置选项整理

  Google上有富厚的 Nginx 的教程和样本设置文件,但许多时候时候,设置这些是一些能力,一直对各人很有辅佐。Include 文件

  不要在您的主 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 ;
}

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 ;
}

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 文件是利用了一些不太常见的设置选项,它值得指出个中一些重要的。

多个 worker  的设置(历程)

  假如你的 Nginx 是多个 CPU 和多核,需要设置成多核的数量较量好。

worker_processes 4;增加打开的文件句柄

  假如 Nginx 处事很大的流量,增加最大可以打开的文件句柄照旧很有用的,因为默认只有 1024 个,可以利用 'ulimit -n' 看到当前系统中的配置。

worker_rlimit_nofile 10240;定制的日志

  可以看看 log_format 和 access_log 二个选项的配置。凡是我们有几个参数最常利用,譬喻"$http_x_forwarded_for" 可以见到 load balancer 的设备之前的 IP,尚有 "$request_time" 可以见到 Nginx 来处理惩罚这个主动所花的时间。

压缩

  压缩对付文本很是很是的有用

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]\.";署理的选项

  这些选项可以在每个 location 中配置

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";

  这其中加了一个定制的参数,就是 'no-cache',这样就不会利用 cache 的内容了。

署理的 Cache

  利用 Nginx 可以给一些文件来 cache 到当地来当 Cache 的处事器,需要配置  proxy_cache_path 和  proxy_temp_path  在你的 HTTP 的 directive 中。在 location 中设置,假如有你想 cache 的内容的话。

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;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/10139.html