Nginx
一、Nginx 主要应用
静态网站部署
负载均衡
静态代理
动静分离
虚拟主机
二、安装以及使用:
步骤:
将包上传至linux解压 — 解压后进入目录执行: (指定安装位置) — make — make install
安装完毕后运行nginx:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf(若尾部追加-t则是测试配置文件)
启动之后执行:ps -ef | grep nginx 判断nginx是否在运行,也可以在外部页面测试80端口是否被拦截
kill -QUIT 主进程号:从容停止Nginx
kill -TERM 主进程号 :快速停止Nginx
pkill -9 nginx :强制停止Nginx
平滑重启nginx: kill -HUP 主进程号
/usr/local/nginx/sbin/nginx -s reload:修改配置文件后重启
三、配置连接tomcat:
主要配置http中的server那一块:在location / 下配置对应项目入口,以及文件的加载 。可以配置多个server
server {
listen 80;
server_name hbzeng.asia;
location / {
proxy_pass http://www.hbzeng.asia:8080;
}
}
配置springboot项目+SSL证书
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name hbzeng.asia;
location / {
proxy_pass http://www.hbzeng.asia:8080;
}
}
#https的请求映射
server {
server_name hbzeng.asia;
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name cloud.tencent.com;
#证书文件名称
ssl_certificate 1_hbzeng.asia_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_hbzeng.asia.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
proxy_pass http://www.hbzeng.asia:8080;
}
}
}
四、负载均衡
1、负载均衡有四种策略
-
轮询:循环接收请求
upstream xxx{ server localhost:8080; server localhost:8081; } //对应路由转发 location / { #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 proxy_pass http://xxx; }
-
权重:按照百分比概率进行接收请求
upstream xxx{ server localhost:8080 weight=5; server localhost:8081 weight=2; }
-
ip_hash:
ip_hash也叫IP绑定,每个请求按访问ip的hash值(哈希值取模来进行分配,模为服务器(tomcat)数量)分配,这样的话每个客户端会固定的访问一个后端服务器,就可以解决session丢失问题
upstream xxx{ ip_hash server localhost:8080; server localhost:8081; }
-
最少连接 :哪台机器接收的请求少,就把新的请求交给它
upstream xxx{ least_conn server localhost:8080; server localhost:8081; }
问题:
轮询、权重、最少连接都会有Session的问题,但ip_hash不会。
但是ip_hash也有一个很大的问题:每个用户的IP不一样,如果hash值取模之后都是同一个服务器
就有可能出现大量请求进入一个服务器而宕机,而没有被取模到的服务器一直空闲着,也就是说,容易出现分配问题
2、服务器更新问题
可以开设备份服务器,备份服务器要先更新好代码,备份服务器在正常情况下客户是访问不到的
只有在正常启动的tomcat全部宕机,才会访问到备份的服务器。
总之:备份服务器必须是最新版本,全部正常服务器宕机才用得到备份服务器!!!
五、静态代理
要把静态资源从Tomcat中脱离出来,不要让Tomcat来处理静态资源,而用nginx来处理,因为nginx更擅长处理静态资源性能更好效率更高
能做静态代理的工具有很多,使用Nginx是因为它静态资源处理的好,但这点和我们为什么使用静态代理没关系
六、动静分离
动态资源交给Tomcat处理,静态资源交给Nginx处理