便于管理的nginx配置

我目前的nginx配置是拆散的,这样可以便于在很多个虚拟主机和目录里重用部分配置。

总体是划分为这样一个结构:

conf/
conf/nginx.conf
conf/proxy.conf
conf/rewrite.conf
conf/location.conf
conf/port.conf
conf/upstream.conf
conf/servers/
conf/servers/www.sudone.com
conf/servers/www.163.com

1、nginx.conf

这就是nginx读取的主文件,没特殊情况是通用的

2、proxy.conf

代理的选项配置,也是通用的

3、rewrite.conf

所有主机的根目录公用的rewrite规则,默认是空文件,可以不使用。

4、location.conf

所有主机都会用到的location目录结构,默认是空文件,可以不使用。

5、port.conf

配置服务器绑定ip和端口,因为nginx如果各个主机ip端口配置有不同会有bug,所以最好是统一设定。

6、upstream.conf

upstream写在这里面,和业务分开,易于控制。

7、servers目录

这个目录下面放的是所有的虚拟主机配置,每个虚拟主机一个文件,由nginx.conf去include,这样处理这些配置变得很灵活。

可以在这里看到到公用的几个配置,带注释

nginx/proxy.conf

#proxy_set_header X-Forwarded-For $remote_addr;
#proxy_set_header REMOTE_ADDR $remote_addr;
#proxy_set_header RealIP $remote_addr;
proxy_set_header Host $proxy_host;
#proxy_set_header Accept-Encoding ”;

#proxy_hide_header X-Cache;
#proxy_hide_header X-Powered-By;
#proxy_hide_header Last-Modified;
#proxy_hide_header Date;
#proxy_hide_header Content-Length;
#proxy_hide_header Content-Language;
#proxy_hide_header Cache-Control;

#proxy_pass_header Server;

client_max_body_size    8m;
proxy_connect_timeout   15s;
proxy_send_timeout      1m;
proxy_read_timeout      1m;
proxy_temp_file_write_size 1024m;
proxy_buffer_size         32k;
proxy_buffers             4 32k;
proxy_busy_buffers_size 64k;

proxy_ignore_client_abort on;

proxy_next_upstream error timeout invalid_header http_503;

#proxy_set_header(设定header)
#proxy_hide_header(隐藏header)
#proxy_pass_header(通过header)
#proxy_connect_timeout(代理连接超时)
#proxy_send_timeout(代理发送超时)
#proxy_read_timeout(代理接收超时)
#proxy_temp_file_write_size(设定缓存文件夹大小)
#proxy_buffer_size(代理缓冲大小)
#proxy_buffers (代理缓冲)
#proxy_busy_buffers_size(高负荷下缓冲大小)
#proxy_ignore_client_abort(不允许代理端主动关闭连接)

nginx/nginx.conf

#使用小号
user  nobody;

#开启进程数
worker_processes  8;

#制定进程到cpu(四cpu:0001 0010 0100 1000)
worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000;

#每个进程最大打开文件数
worker_rlimit_nofile 10240;

#进程号保存文件
pid        logs/nginx.pid;

events {
#使用epoll(linux2.6的高性能方式)
use epoll;
#每个进程最大连接数(最大连接=连接数x进程数)
worker_connections  10240;
}

http {

#文件扩展名与文件类型映射表
include       mime.types;

#默认文件类型
default_type  text/html;

#日志文件格式
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  /dev/null;

#长链接超时时间
keepalive_timeout  30;

#打开gzip压缩
gzip  on;
#最小压缩文件大小
gzip_min_length  1000;
#压缩缓冲区
gzip_buffers     4 8k;
#压缩类型
gzip_types       text/* text/css application/javascript application/x-javascript;
#压缩比率
gzip_comp_level  9;
#压缩通过代理的所有文件
gzip_proxied     any;
#vary header支持
gzip_vary        on;
#压缩版本(默认1.1,前端为squid2.5使用1.0)
gzip_http_version 1.0;
#输出缓冲区
output_buffers   4 32k;
#输出拆包大小
postpone_output  1460;

#接收header的缓冲区大小
client_header_buffer_size 128k;
large_client_header_buffers 4 256k;

#客户端发送header超时
client_header_timeout  1m;
#客户端发送内容超时
client_body_timeout    1m;
#发送到客户端超时
send_timeout           1m;
#开启高效文件传输模式
sendfile                on;
#捕捉代理端的http错误
#proxy_intercept_errors  on;
#默认编码
charset GBK;

#默认域名(不能访问)
server {include port.conf;server_name null;location / {root /dev/null;log_not_found off;}}

#嵌套upstream.conf
include upstream.conf;

#嵌套servers/*.com;
include servers/*.com;
include servers/*.net;
include servers/*.org;
include servers/*.com.cn;
include servers/*.cn;
}

整个框架的例子可以下载这个rar包:

nginx_conf