# 定义Nginx运行用户
user root;
# Nginx进程数,设置为auto代表nginx会自己匹配,一般为CPU核心数量
worker_processes auto;
# 错误日志路径及级别
error_log logs/error.log notice;
# pid文件存放位置
pid logs/nginx.pid;
# Nginx最大文件打开数
worker_rlimit_nofile 40960;
events {
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 10240;
#在Nginx接到一个新连接通知后调用accept()来接受尽量多的连接
multi_accept on;
}
http {
# 隐藏nginx版本号
server_tokens off;
# 文件扩展名与文件类型映射表
include mime.types;
# 默认文件类型
default_type application/octet-stream;
# nginx 日志格式
log_format main '$remote_addr|$time_local|$request|'
'$status|$body_bytes_sent|$http_referer|'
'$http_user_agent|$http_x_forwarded_for|'
'$upstream_addr|$upstream_status|$request_time|$upstream_response_time';
# 定义access日志,并使用上面定义的format
access_log logs/access.log main;
# 请求头部缓存大小
client_header_buffer_size 4k;
# 请求缓存大小
large_client_header_buffers 4 32k;
#允许客户端请求的最大单文件字节数
client_max_body_size 500m;
#缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 1024k;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header request_uri $request_uri;
proxy_set_header Host $host;
#nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 90;
#后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 90;
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 90;
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 128k;
#proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_buffers 8 128k;
#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 256k;
#高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 256k;
proxy_temp_path /usr/local/nginx/proxy_temp;
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:100m inactive=1d max_size=10g;
#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
sendfile on;
#防止网络阻塞
tcp_nopush on;
#防止网络阻塞
tcp_nodelay on;
#长连接超时时间,单位为秒
keepalive_timeout 30;
#gzip模块设置
gzip on;
#开启gzip压缩输出
gzip_min_length 1k;
#最小压缩文件大小
gzip_buffers 4 16k;
#压缩缓冲区
gzip_comp_level 4;
#压缩等级
gzip_proxied any;
gzip_types image/jpeg image/png text/plain application/xml application/x-javascript text/javascript text/css;
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;
#限制请求数,除了白名单外的IP每秒最多处理8个请求
limit_req_zone $binary_remote_addr zone=showjoy_req:20m rate=1r/s;
#限制连接数
limit_conn_zone $binary_remote_addr zone=showjoy_conn:20m;
#限制连接数,请求数的白名单
geo $white_ip {
ranges;
default 0;
#白名单ip-1
1.1.1.1-1.1.1.2 1;
1.1.1.1-1.1.1.2 1;
1.1.1.1-1.1.1.2 1;
1.1.1.1-1.1.1.2 1;
#白名单ip-2
1.1.1.1-1.1.1.2 1;
1.1.1.1-1.1.1.2 1;
}
limit_req_whitelist geo_var_name=white_ip geo_var_value=1;
#----------------------------------
server {
listen 80;
server_name *.xxx.net xxx.net *.xxx.com xxx.com *.xxx.cn xxx.cn *.xxx.com *.xxx.com.cn xxx.com.cn;
rewrite ^(.*) http://www.xxx.com$1 permanent;
}
server{
listen 80 default;
server_name _;
return 444;
}
# 加载该目录下的配置
include /usr/local/nginx/conf/vhost/*.conf;
# 错误代码(403、404、50x)页面
error_page 403 http://file.xxx.com/assets/errorNew.html;
error_page 404 http://cdn1.xxx.com/assets/error.html;
error_page 500 502 503 504 http://cdn1.xxx.com/assets/error.html;
}
Nginx 配置文件总结
最新推荐文章于 2024-09-25 10:00:00 发布