微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx.conf配置文件常用配置详解负载均衡+https服务 + client-nginx-server长连接配置 + 大量TIME_WAIT

本文主要对实现以下功能Nginx配置文件一些配置属性进行解释;

一、功能负载均衡+https服务 + client-Nginx-server长连接配置

1、访问:http://localhost/test请求实现负载均衡;

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

2、利用Nginx搭建https服务;

在这里插入图片描述


3、client-Nginx-server长连接配置,client-Nginx长连接;Nginx-server长连接;

4、如果Nginx-server未配置长连接,server会出现大量TIME_WAIT,如果client-Nginx未使用长连接,Nginx出现大量TIME_WAIT

#下面两个参数如果设置过小,Nginx主动发起四次挥手销毁连接,造成Nginx出现大量的TIME_WAIT
keepalive_timeout 75; #设置keep-alive客户端连接在服务器端保持开启的超时值;值为0会禁用keep-alive客户端连接;
keepalive_requests 100; #设置一个keep-alive连接上可以服务的请求的最大数量,当最大请求数量达到时,连接被关闭认是100。

二、Nginx.conf配置文件,对于每个属性有相应的解释

#Nginx.conf配置文件
#user  nobody;
worker_processes  1; #工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍于cpu。

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;     #错误日志:存放路径。

#pid        logs/Nginx.pid;      #pid(进程标识符):存放路径。

events {
    worker_connections  1024;     
#指定一个Nginx进程可以打开的最大描述符:数目。理论值应该是最多打开文件数(ulimit -n)与Nginx进程#数相除,但是Nginx分配请求并不是那#么均匀,#所以最好与ulimit -n 的值保持一致。
#如果并发量比较高的情况下,有可能请求超过工作连接上限;502错误
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;  
#对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络#IO处理速度,降低系统uptime。
    #tcp_nopush     on;

    #keepalive_timeout  0;
    #如果设置过小,Nginx主动发起四次挥手销毁连接,造成Nginx出现大量的TIME_WAIT
    keepalive_timeout  75;  #设置keep-alive客户端连接在服务器端保持开启的超时值;值为0会禁用keep-alive客户端连接;
    keepalive_requests 100;  #设置一个keep-alive连接上可以服务的请求的最大数量,当最大请求数量达到时,连接被关闭认是100。
   

    #gzip  on;
	
    #upstream上流即后端服务器,
    #目前支持4种方式的分配
    #轮询(down自动剔除,不参与负载均衡)、权重(性能不均)、
    #hash(每个请求按访问ip的hash结果分配,每个访客固定到一个一个后端服务器,解决session问题)
    #fair根据响应时间进行分配,响应时间短的优先分配
    #url_hash:根据url的hash结果来分配请求;每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

   upstream backend {    
    server localhost:8080 down weight=1;
    server localhost:8081 weight=5;
    server localhost:8082 weight=10 backup;
   }
   #可以对每一个后端服务器设置状态 
   #down表示单前的server暂时不参与负载
   #weight为weight越大,负载的权重就越大
   #max_fails:允许请求失败的次数认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
   #fail_timeout:max_fails次失败后,暂停的时间。
   #backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
   #http服务,监听80端口
    server {
        listen       80;   #配置监听端口
        server_name  localhost;   #配置访问域名,localhost可以根据host设置域名,这边server_name设置为host中对应的域名
        
   #location ~* \.(mp3|exe)$ {undefined  对以“mp3或exe”结尾的地址进行负载均衡

        location / {
            root   html;
            index  index.html index.htm; 
            proxy_pass http://backend;   #80端口的请求将会进行负载均衡  设置被代理服务器的端口或套接字,以及URL
            proxy_http_version 1.1;         #设置Nginx和后端服务器之间的http版本,因为1.1才支持长连接 
            proxy_set_header Connection ""; #请求清理从client过来的http header,及时client-Nginx是短连接,Nginx-server也可以是长
        }
    }

    # 我们在ngnix上面配置了https
server {
     listen       443 ssl;
     server_name  localhost;

     #增加ssl
     #ssl on;  #如果强制HTTPS访问,这行要打开 
     #server.crt(证书签名文件CA文件)的路径
     ssl_certificate      D:\\java\\ngnix\\Nginx-1.20.2\\Nginx-1.20.2\\conf\\ssl\\server.crt; 
     #server_nopwd.key(私钥)服务器私钥的路径
     ssl_certificate_key  D:\\java\\ngnix\\Nginx-1.20.2\\Nginx-1.20.2\\conf\\ssl\\server_nopwd.key;

     #指定缓存大小为1m
     ssl_session_cache    shared:SSL:1m;
     #指定缓存时间为1分钟
     ssl_session_timeout  1m;
     #关闭认开启的ssl_session_tickets
     ssl_session_tickets off;

     #设定支持的TLS协议版本
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     #配置密码套件
     ssl_ciphers  HIGH:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!ECDHE;
     ssl_prefer_server_ciphers  on;

     location / {
         #root   html;
         #index  index.html index.htm;
         proxy_pass http://127.0.0.1:8080;
     }
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐