Nginx配置文件

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进程的最大并发链接数

你可能感兴趣的:(Nginx配置文件)