Nginx服务配置
- worker_processes 4;#nginx工作进程,一般设置为和cpu核数一样
- error_log /data1/logs/error.log crit; #错误日志存放位置
- user nginx;#运行用户
- pid /application/nginx/nginx.pid;#进程pid存放位置
- worker_rlimit_nofile 51200;#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
- worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;#cpu亲和力,让不同工作进程使用不同cpu
http反向代理服务
- include mime.types; #文件扩展名与类型映射表
- default_type application/octet-stream; #默认文件类型
- log_format:日志格式设置
- $remote_addr:反向代理服务器的iP
- $http_x_forwarded_for: 用来纪录客户端ip
- $remote_user: 用来纪录客户端用户名称
- $time_local: 用来纪录客户端访问的时间和时区
- $request: 用来纪录请求的url和http协议
- $status: 用来纪录请求的状态码
- $body_bytes_sent: 用来纪录请求返回给客户端body的大小
- $http_referer: 用来纪录从哪个页面链接访问过来的
- $http_user_agent: 用来纪录客户端浏览器的信息
- access_log:log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
- client_header_buffer_size:客户端请求头部缓存区大小
- large_client_header_buffers:客户请求头缓冲大小(一般会使用client_header_buffer_size,当client_header_buffer_size这个header的大小太大则使用这个buffer)
- client_max_body_size:通过nginx上传文件的最大值
- sendfile: nginx 是否调用sendfile 函数(zero copy 方式)来输出文件
- tcp_nopush:允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
- tcp_nodelay:启用则意味着禁用nagle算法,允许小包发送
- proxy_connect_timeout :后端服务器连接超时时间
- proxy_read_timeout:连接成功后等待后端服务器响应的时间
- proxy_send_timeout:后端服务器返回数据的时间
- proxy_buffer_size:被代理服务器读取的第一部分应答的缓冲区大小,通常设置为proxy_buffers中单个缓存区的大小
- proxy_buffers:设置用于读取应答(来自被代理服务器)的缓冲区数目和大小
- proxy_temp_file_write_size 256k;#设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
- proxy_busy_buffers_size 256k;
- proxy_temp_path /data0/proxy_temp_dir;#proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
- proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;#设置内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
- keepalive_timeout 120;#keeppalive超时时间
- client_body_buffer_size 512k;#如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。
无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误 - proxy_intercept_errors on;#表示使nginx阻止HTTP应答代码为400或者更高的应答。
- gzip on;#开启gzip
- gzip_min_length 1k; #最新压缩文件大小
- gzip_buffers 4 16k; #压缩缓冲区大小
- gzip_http_version 1.1; #http协议版本,默认1.1
- gzip_comp_level 6; #压缩等级,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是消耗cpu
- gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;#压缩类型
- upstream #定义负载均衡服务
upstream test{
server 127.0.0.1:8070 weight=8 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8080 weight=3 max_fails=2 fail_timeout=30s;
server 127.0.0.1:8090 backup;
server 127.0.0.1:8091 down;
}
- backup 预留的备份服务器,当其他所有的非backup服务器出现故障或者忙的时候,才会请求backup机器,因为这台集群的压力最小。
- down 当前server不参与负载均衡
- max_fails 允许请求失败的次数,默认是1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。0表示禁止失败尝试,企业场景:2-3.京东1次,蓝汛10次,根据业务需求去配置。
- fail_timeout,在经历了max_fails次失败后,暂停服务的时间。京东是3s,蓝汛是3s,根据业务需求配置。常规业务2-3秒合理。
- weight代表权重,权重越高的服务器被分配请求的概率越大。
server
- listen 80;#配置监听端口
- server_name image.***.com;#配置访问域名
- index index.html index.htm index.php; #首页排序
- root /data0/abc; #站点根目录,即网站程序存放目录
- location 配置服务地址
- error_page 500 502 503 504 /50x.html;#定义错误页面
- error_log /lw/logs/nginx/dataadmin.test.com.ssl.error.log; #错误日志存放路径
- access_log /lw/logs/nginx/dataadmin.test.com.ssl.access.log access ; #日志格式及日志存放路径
- ssl on; #开启ssl
- ssl_certificate /ls/app/nginx/conf/mgmtxiangqiankeys/server.crt; #服务的证书
- ssl_certificate_key /ls/app/nginx/conf/mgmtxiangqiankeys/server.key; #服务端key
- ssl_client_certificate /ls/app/nginx/conf/mgmtxiangqiankeys/ca.crt; #客户端证书
- ssl_session_timeout 5m; #session超时时间
- ssl_verify_client on; # 开户客户端证书验证
- ssl_protocols SSLv2 SSLv3 TLSv1; #允许SSL协议
- ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #加密算法
- ssl_prefer_server_ciphers on; #启动加密算法
location
- proxy_pass http://img_relay$request_uri;设置被代理服务器的端口或套接字,以及URL
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;#设备连接ip这个ip可能是客户端ip或代理服务器ip
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#请求客户端的真实ip
location例子
- 设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
- 禁止访问.htxxx文件
location ~ /\.ht {
deny all;
}
- allow 219.237.222.30 ;#允许访问的ip
- expires 30d; #客户端缓存上述js,css数据30天
events模块
- use epoll;#绑定linux高效工作模式
nginx支持的工作模式:select、poll、kqueue、epoll、rtsig、/dev/poll
|-- select和poll都是标准的工作模式,
|-- kqueue和epoll是高效的工作模式,
epoll用于linux平台、支持 linux2.6+,而kqueue用于BSD系统
若操作系统支持高效工作模式,则首选该模式。所以对于linux系统,选用epoll模式
- worker_connections 1024;#单个后台worker process进程的最大并发链接数