个人网站性能优化经历Nginx中间件优化

Posted exodus3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人网站性能优化经历Nginx中间件优化相关的知识,希望对你有一定的参考价值。

自己搭建了一个基于SpringBoot+Spring Security+MyBatis+mysql+Redis+Thymeleaf的博客网站
上线个人云服务器后,发现服务器访问慢。个人服务器是1核2G的,1M宽带,虽然服务器是低配的,但是可以通过优化代码,中间件等手段,来提升性能。

这篇主要讲nginx中间件优化

Nginx主要从负载均衡,限流,限制单个IP的并发数等方面来讲解

一、Nginx负载均衡

负载均衡,用白话讲,就是一个机器分身成几个机器,有一样的效果,帮你分担活。
以前的文章讲了负载均衡SpringBoot项目在Linux部署用Nginx实现负载均衡Https访问,这篇当作复习,大概讲解一下。

1、假如把java项目打包成3个,3个端口不一

2、nginx配置信息,主要配置ip+端口号

upstream my_blog { #upstream节点名称,my_blog给后面负载均衡使用
        server 193.112.29.147:14341;# ip+端口号
        server 193.112.29.147:14342;
        server 193.112.29.147:14343;
    }
    server {
		listen 443;# 新增443端口
		server_name xuluowuhen.com www.xuluowuhen.com;# 域名
		# 开启ssl
		ssl on;
		# 配置ssl证书(文件在相同目录下,也可以不同目录,路径要写绝对路径)
		ssl_certificate 1_www.xuluowuhen.com_bundle.crt;
		# 配置证书秘钥
		ssl_certificate_key 2_www.xuluowuhen.com.key;
		# ssl会话cache
		ssl_session_cache shared:SSL:1m;
		# ssl会话超时时间
		ssl_session_timeout 5m;
		# 配置加密套件,写法遵循 openssl 标准
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
		ssl_prefer_server_ciphers on;
		location / {
			proxy_ssl_server_name on;
			proxy_pass http://my_blog; # 跟upstream节点名称节点对应
			index  index.html  index.htm;
		}
		error_page  404              /404.html;
		
		error_page  403              /403.html;
	}

3、检验并修改好配置信息,启动Nginx

进入配置文件目录
cd /usr/local/nginx/conf/
检测配置是否ok
../sbin/nginx -t
重新加载
../sbin/nginx -s reload
查看nginx运行状态
ps -A | grep nginx

大概思路是这些,具体可以看以前写的博客

二、限流,禁封IP

ip黑名单,如果发现某个ip持续不断的访问,甚至他的访问造成你的服务器压力很大,CPU持续增加,那么你可以拉近你的黑名单里。

# 在http模块添加以下配置即可
deny 192.168.32.14

甚至可以限制用户访问的次数,并发数,等等,如果别人用Jmeter做压测,那么你的服务器很大程度扛不住。

具体配置如下

#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为5个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=5r/s;
server {
	# listen 443;
	listen 441;
	server_name xuluowuhen.com www.xuluowuhen.com;
	# 开启ssl
	ssl on;
	# 配置ssl证书
	ssl_certificate 1_www.xuluowuhen.com_bundle.crt;
	# 配置证书秘钥
	ssl_certificate_key 2_www.xuluowuhen.com.key;
	# ssl会话cache
	ssl_session_cache shared:SSL:1m;
	# ssl会话超时时间
	ssl_session_timeout 5m;
	# 配置加密套件,写法遵循 openssl 标准
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
	ssl_prefer_server_ciphers on;
	location / {
		proxy_ssl_server_name on;
		proxy_pass http://my_blog; 
		index  index.html  index.htm;
		
		#限制每ip每秒不超过20个请求,漏桶数burst为5
		#brust的意思就是,如果第1秒、2,3,4秒请求为19个,
		#第5秒的请求为25个是被允许的。
		#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
		#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
		#第125个请求时,5个请求放到第2秒执行,
		#设置nodelay,25个请求将在第1秒执行。

		limit_req zone=allips burst=5 nodelay;
	}
	error_page  404              /404.html;
	
	error_page  403              /403.html;
}

以上是关于个人网站性能优化经历Nginx中间件优化的主要内容,如果未能解决你的问题,请参考以下文章

个人网站性能优化经历网站安全方面优化

个人网站性能优化经历访问文章功能优化

个人网站性能优化经历CDN优化过程

个人网站性能优化经历Redis优化过程

个人网站性能优化经历插件的拓展

个人网站性能优化经历网站添加实用功能