美文网首页
Nginx配置文件

Nginx配置文件

作者: shawvyu | 来源:发表于2020-12-09 10:55 被阅读0次

    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配置文件

          本文链接:https://www.haomeiwen.com/subject/npofgktx.html