nginx v1.20.1优化配置,根据使用场景删减配置项

# nginx作为负载均衡服务器使用,将用户端请求平均负载到多台应用服务器

# windows下user不起作用
# user  root;
# nginx启动进程数,默认为1,如果并发较大可以根据CPU线程数修改,超过CPU线程数无用
worker_processes  1;

# 错误日志文件路径及级别
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  D:/logs/error.log info;

#pid        logs/nginx.pid;

events {
    # 单个工作进程可以允许同时建立外部连接的数量
    worker_connections  1024;
}

# socket代理
stream {
    # 添加socket转发的代理
    upstream socket_proxy {
        hash $remote_addr consistent;
        # 转发的目的地址和端口
        server 192.168.0.200:41571 weight=5 max_fails=3 fail_timeout=30s;
    }

    # 提供转发的服务,即访问localhost:8016,会跳转至代理socket_proxy指定的转发地址
    server {
       listen 8016;
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass socket_proxy;
    }
}  

# http块,HTTP请求的配置均经过此块,一个nginx可以配置多个http块
http {
    # 隐藏nignx运行版本
    server_tokens off; 
    include       mime.types;
    default_type  application/octet-stream;
	
	# 客户端请求包上限大小
    client_max_body_size 20M;
	
	underscores_in_headers on;
	
    # access_log off; 
    # 请求日志格式,可以根据需要自己定义
    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  D:/logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    # HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。
    # Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。
	# Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。
    keepalive_timeout  0;
    #keepalive_timeout  65;
 
    #gzip  on;
    # 应用节点配置
    upstream myserver {
	    # ip_hash后续同一ip的访问将只会请求同一个服务器,session共享,要求nginx一定是最前端的服务器,假如nginx后端还有其它负载均衡,就不会有作用
		# 一旦使用了ip_hash,需要移除一台服务器的时候,需要在这台服务器配置后面加上关键字down,表示不可用,直接移除导致hash错乱;
    	ip_hash;
	server 127.0.0.1:8082 weight=5 max_fails=5 fail_timeout=60s down;
        server 127.0.0.1:8083 weight=5 max_fails=5 fail_timeout=60s;
        server 127.0.0.1:8084 weight=5 max_fails=5 fail_timeout=60s;
    }

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
		
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		# 这里是重点,这样配置才不会丢失端口
		proxy_set_header Host $host:$server_port;

        location /manage {
			# 此处的 @router 实际上是引用下面的转发,否则在 Vue 路由刷新时可能会抛出 404
			try_files $uri $uri/ @router;
            root   D:/Server/dist;
            index  index.html index.htm;
        }		

		location / {
				proxy_pass http://myserver/;
				proxy_read_timeout 60s;
				proxy_send_timeout 60s;
				proxy_connect_timeout 10s;
				# 以下各项参数的配置会在实际使用过程中进行微调
				proxy_set_header Host $host:$server_port;
			#   proxy_set_header Host www.xiet.com:8080;
				proxy_set_header X-Real-IP $remote_addr; 
				proxy_set_header REMOTE-HOST $remote_addr; 
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			# 配置此项是为了在多重nginx跳转中,不至于发生接口请求地址异常
			# 在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置    
			#    proxy_redirect http://192.168.0.200:8080/ http://www.xiet.com:8080/;
			   # 跨越允许,不过这样配置不够安全
			#   add_header Access-Control-Allow-Headers *;	
				add_header Access-Control-Allow-Headers $http_access_control_request_headers; 
			#  	add_header Access-Control-Allow-Methods *;
				add_header Access-Control-Max-Age 3600;
				add_header Access-Control-Allow-Credentials true;
				add_header Access-Control-Allow-Origin $http_origin;
			#   add_header Access-Control-Allow-Origin http://www.xiet.com:8080;	
			#	allow 192.168.0.0/24;
			#	allow 127.0.0.1;
			#	deny all; 
				if ($request_method = OPTIONS ) {
					return 200;
				}
		}	 

		#error_page  404              /404.html;

		# redirect server error pages to the static page /50x.html
		#
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}
    }

    server {
        listen 443 ssl http2;
        server_name  abc.mywebsite.com;
		
		client_max_body_size 50m;
        #charset koi8-r;
		
		ssl_certificate D:/nginx-1.20.1/cert/8786792_abc.mywebsite.com_nginx/8786792_abc.mywebsite.com.pem;
		ssl_certificate_key D:/nginx-1.20.1/cert/8786792_abc.mywebsite.com_nginx/8786792_abc.mywebsite.com.key;
		ssl_session_timeout 5m;
	
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!3DES:!ADH:!RC4:!DH:!DHE;
		ssl_prefer_server_ciphers  on;
		
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $host:$server_port; #这里是重点,这样配置才不会丢失端口
		proxy_redirect http:// https://;
				
        #access_log  logs/host.access.log  main;
		
 		location /login {
			proxy_pass http://8.130.36.20:81/login ;
            #添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒  
            proxy_connect_timeout   10;   
            proxy_send_timeout      60;  
            proxy_read_timeout      60;  
		}
		
 		location /sign {
			proxy_pass http://8.130.36.20:81/sign ;
            #添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒  
            proxy_connect_timeout   10;   
            proxy_send_timeout      60;  
            proxy_read_timeout      60;  
		}	
		
 		location / {
			proxy_pass http://8.130.36.20:81/ ;
            #添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒  
            proxy_connect_timeout   10;   
            proxy_send_timeout      60;  
            proxy_read_timeout      60;  
		}
	
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }	
}

你可能感兴趣的:(middleware,nginx,运维,服务器)