当前位置: 首页 > >

Nginx的正反向代理

发布时间:

Nginx正反向代理


引言:


????????本文主要分享了Nginx的正反向代理,包括:Nginx简介、环境的搭建、正向代理的实现、反向代理的实现、Web集群、经典的Session共享问题;





文章目录
Nginx正反向代理1.Nginx简介2. Nginx安装2.1 下载Nginx2.2 启动Nginx2.3 访问Nginx2.4 停止Nginx
3. Nginx正向代理3.1 修改config下的nginx.config3.2 打包vue项目3.3 将项目目录下dist文件中的文件覆盖到nginx中的html文件夹下3.4 输入localhost进入项目首页
4.Nginx反向代理配置4.1 解压tomcat74.2 分别修改两个tomcat的server.xml4.2.1 修改第一份的server.xml配置文件4.2.2 修改第二份tomcat的server.xml配置文件
4.3 分别启动两份tomcat服务器4.4 将nginx.zip文件减压到tomcat同级目录中4.5 测试运行web集群
5. Session共享问题5.1 构建场景5.1.1 write.jsp5.1.2 read.jsp
5.2 加Redis压缩包在tomcat的同级目录下5.3 启动Redis5.4 给tomcat加入jar包5.5 修改context.xml文件5.6 启动



1.Nginx简介

?????????Nginx是由俄罗斯人研发,是一款轻量级的Web 服务器在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好;



特点:


稳定性强;提供了丰富的配置实例;内存占用小,并发能力强;

2. Nginx安装
2.1 下载Nginx

官方网站下载地址:https://nginx.org/en/download.html


选择相应的版本下载后,解压即可;


2.2 启动Nginx

双击nginx.exe

2.3 访问Nginx

在浏览器中输入地址:http://localhost,出现如下页面表示访问成功




2.4 停止Nginx

最暴力的就是直接在任务管理器中结束进程(个数与电脑的核数有关)



3. Nginx正向代理

Nginx正向代理偏向客户端



3.1 修改config下的nginx.config

#正向代理
location ^~ .api$ {
proxy_pass http://127.0.0.1:8088;
}

3.2 打包vue项目


输入以下命令,出现下图即可------将项目打包;



npm run bulid


3.3 将项目目录下dist文件中的文件覆盖到nginx中的html文件夹下


3.4 输入localhost进入项目首页

这是我项目的首页




4.Nginx反向代理配置

Nginx反向代理偏向服务端,web集群部署



4.1 解压tomcat7

在一个文件夹下解压两份tomcat分别命不同的名字以示区别;




4.2 分别修改两个tomcat的server.xml

conf/server.xml



4.2.1 修改第一份的server.xml配置文件

22行左右:



70行 connectionTimeout="20000"
redirectPort="8443" />

connectionTimeout="20000"
redirectPort="8443" />

92行



4.2.2 修改第二份tomcat的server.xml配置文件





connectionTimeout="20000"
redirectPort="8443" />

connectionTimeout="20000"
redirectPort="8443" />





4.3 分别启动两份tomcat服务器


bin/startup.bat启动


分别在tomcat/webapps/ROOT/index.jsp中做标记




4.4 将nginx.zip文件减压到tomcat同级目录中

修改nginx/conf/nginx.conf配置文件,如下;


保存,并启动nginx服务



#gzip on;
#启用gzip压缩
#服务器集群配置
upstream kak.com{#服务器集群名称
#服务器配置,weight是权重,权重越大,分配的概率越大。
server 127.0.0.1:18080 weight=1;
server 127.0.0.1:28080 weight=1;
}
#当前的nginx配置
server {
#监听端口号
listen 8888;
server_name localhost;
#如是8080,交给kak集群
#charset koi8-r;

#access_log logs/host.access.log main;

#location / {
# root html;
# index index.html index.htm;
# }
location / {
proxy_pass http://kak.com ; #与服务器集群的名称一致
proxy_redirect default;
}

4.5 测试运行web集群


浏览器输入localhost:8888,会有两个服务器轮流交替工作;


一个崩溃不影响另一个;



5. Session共享问题

??????????当web集群搭建好之后,session属于本地缓存并不能在服务间共享,因此原有的session存储会话的策略将失效;另一个访问时将会取不到这个Session中的值,这也就是Session共享问题;通过Redis技术来解决该问题;


5.1 构建场景

分别在两个Tomcat中的webappsROOT下创建write.jsp和read.jsp



5.1.1 write.jsp


tomcat_01_write
<%
session.setAttribute("myName","kak");
%>


5.1.2 read.jsp


tomcat_01_read
<%
out.println("server one
");
out.println("username:");
out.println(session.getAttribute("myName")+"
");
out.print("sessionID:"+session.getId());
%>


5.2 加Redis压缩包在tomcat的同级目录下


5.3 启动Redis

在cmd中启动



redis-server.exe redis.windows.conf


5.4 给tomcat加入jar包

在两个tomcat/lib下添加redis管理session的jar包:


commons-pool2-2.2.jarjedis-2.5.2.jartomcat-redis-session-manager-2.0.0.jar


5.5 修改context.xml文件

修改两个tomcat中的context.xml文件:conf/context.xml




host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />


5.6 启动

启动顺序:


    redistomcatnginx





友情链接: