Nginx反向代理、负载均衡、动静分离、虚拟域名配置
关于基础概念,已经在上篇讲述清楚,本篇不多赘述
1 反向代理
向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
1.1 nginx配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://101.132.152.21:8888/;
}
}
2 负载均衡
2.1 ngxin配置
#声明tomcat集群
upstream fengmi {
server localhost:8889;
server localhost:8888;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://fengmi/;
}
}
2.2 nginx负载均衡策略
2.2.1 默认轮询
2.2.2 权重
#声明tomcat集群
upstream fengmi {
server localhost:8889 weight=2;
server localhost:8888 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://fengmi/;
}
}
2.2.3 iphash
指定负载均衡服务器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
#声明tomcat集群
upstream fengmi {
ip_hash;
server localhost:8889;
server localhost:8888;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://fengmi/;
}
}
2.2.4 least_conn
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
#声明tomcat集群
upstream maitaole {
least_conn; #把请求转发给连接数较少的后端服务器
server localhost:8889;
server localhost:8888;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://fengmi/;
}
}
3 动静分离
3.1 打包前端项目
修改src/utils/request.jsp中的baseUrl为后端的nginx服务器的地址
执行npm run build打包项目
3.2 部署前端项目
将dist目录下的资源上传到nginx服务器的html目录下
修改nginx服务器配置
location / {
root html;
index index.html index.htm;
}
因为现在前端和后端都在同一个nginx服务器上,所以要分开部署
- 同一台服务器上安装两个Nginx,并修改不同的端口(如:前端部署在8080上,后端部署在80上)
- 将前端和后端部署在不同的服务器上
3.3 配置静态图片资源访问
配置Nginx访问路径
# 配置图片访问地址
location /upload/ {
alias D:/workspace/upload/; # 如果是linux环境则配置(路径自由选择):/usr/local/upload
}
4 虚拟域名配置
4.1 修改nginx配置
#声明tomcat集群
upstream maitaole {
server localhost:8889;
server localhost:8888;
}
server {
listen 80;
server_name www.qfjava.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://fengmi/;
}
}
4.2 修改本地域名解析器
修改C:\Windows\System32\drivers\etc\hosts文件
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
101.132.152.21 www.yingjava.com
4.3 访问测试
http://www.yingjava.com/