个人网站性能优化经历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,如果不设置该选项,严格使用平均速率限制请求数,
#第1秒25个请求时,5个请求放到第2秒执行,
#设置nodelay,25个请求将在第1秒执行。
limit_req zone=allips burst=5 nodelay;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
以上是关于个人网站性能优化经历Nginx中间件优化的主要内容,如果未能解决你的问题,请参考以下文章