Nginx最佳实践

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 / {
			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  HIGH:!aNULL:!MD5;
	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;
    }
}	

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

她梦i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值