Nginx优化之长连接/https/负载均衡

关于keepalive

有时我们需要用到nginx的 反向代理 (比如:跨域),此时需要“长连接”!其注意事项有两点:

  1. 从client到nginx的连接是长连接
  2. 从nginx到server的连接时长连接

默认情况下,nginx已经开启了对client的keepalive支持,但一些场景下,仍然需要我们手动调整参数重写一下:

http{
	keepalive_timeout	超时值	响应header;
	keepalive_request	数量值;
}

 

代码中:

  • 超时值——keepalive客户端连接在服务器端保持开启的超时值(默认75s),值为0时,将禁用keepalive连接;
  • 响应header——(可选)在响应的header域中设置一个值 Keep-Alive:timeout=time
  • 数量值——设置一个keepalive连接上可以服务的请求的最大数量(当达到值时,连接被关闭(默认值100))

保持和server的长连接

默认nginx访问后端都是短连接(也就是“典型的HTTP1.0”),为了让nginx和后端server之间保持长连接,可以如下配置:

http{
	upstream BACKEND{
		server 192.168.0.1:8080 weight=1 max_false=2 fail_timeout=30s;
		server 192.168.0.2:8080 weight=1 max_false=2 fail_timeout=30s;
		keepalive 300;
	}
	server{
		listen 8080 default_server;
		server_name:"";
		location /{
			proxy_pass http://BACKEND
			proxy_set_header Host $Host;
			proxy_set_header x-forwarded-for $remote_addr;
			proxy_set_header X-Real-IP $remote_addr;
			add_header Cache-Control no-store;
			add_header Pragma no-cache;
			proxy_http_version 1.1;       //很重要!
			proxy_set_header Connection "";
		}
	}
}

 

代码中:

  • (第17行)proxy_http_version 1.1; 最好写上,因为http长连接的支持是从1.1版本后才有的;
  • upstream中的keepalive——此时不表示超时,也不是前面说的单次请求最大连接数(keepalive_request),而是设置upstream服务器的空闲keepalive连接的最大数量。

nginx官方上说:当这个数量被突破时,最近使用次数最少的链接将被关闭(译)

nginx配置HTTPS

server{
	listen	80	default_server;
	listen	443	ssl;
	server_name	 cjxnsb.cn;
	root	/mxc/UCgzs;
	index	1.html 2.html 3.html;

	ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate                 /usr/local/nginx/conf/server.pem;
    ssl_certificate_key             /usr/local/nginx/conf/server.key;
    ssl_session_cache               shared:SSL:10m;
    ssl_session_timeout             10m;
    ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+EXP;
    ssl_prefer_server_ciphers       on;
    ...
}

 

第13行:ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+EXP;是nginx的优化之一:删去效率低下的kEDH加密算法!

Nginx负载均衡

当一个域名指向多台web服务器,添加一台nginx负载均衡服务器,将客户端请求“平均”发送给每台web服务器,避免单台服务器因负载过高而其余服务器空闲而出现的损失

新建配置文件:

vi /etc/nginx/conf.d/test.conf
  •  

添加内容:

upstream test{                        #有多个文件,此处配置多个(test——自定义名)
	ip_hash;
	server	192.168.0.1:80	weight=100;
	server	192.168.0.2:80	weight=50;
}
server{
	listen	80;
	server_name	cjxnsb.cn;
	location /{
		proxy_pass	http://test;
		proxy_set_header	Host $host;
		proxy_set_header	X-Real-IP	$remote_addr;
		proxy_set_header	X-Forwarded-For	$proxy_add_x_forwarded_for;
	}
}
  • upstream:负载均衡配置项
  • ip_hash:将同一客户端的所有请求发送给同一服务器(如不发送给同一服务器,有可能出现客户端刚登陆网站,点击其他子页面又提示登陆)
  • server:web服务器地址
  • proxy_pass:引用upstream定义的名称(如上面代码中的“test”)

upstream配置多个,则下面location /前面要添加对应数量的location ~ 配置名
内部写法和location / 里异曲同工

然后,重载nginx配置:

nginx -t                  #一般都要先写这个——验证nginx配置更新
nginx -s reload          #重载

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值