Nginx的正反向代理

Nginx正反向代理

引言:

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

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行左右:<Server port="8005" shutdown="SHUTDOWN">
<!--改为-->
<Server port="18005" shutdown="SHUTDOWN">

70行<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<!--改为-->  
<Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               
 92行<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />   
<!--改为-->  
 <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />  

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

<Server port="8005" shutdown="SHUTDOWN">
<!--改为-->
<Server port="28005" shutdown="SHUTDOWN">

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<!--改为-->  
<Connector port="28080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
               
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />   
<!--改为-->  
 <Connector port="28009" protocol="AJP/1.3" 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中的webapps\ROOT下创建write.jsp和read.jsp

5.1.1 write.jsp

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

5.1.2 read.jsp

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

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.jar
  • jedis-2.5.2.jar
  • tomcat-redis-session-manager-2.0.0.jar

在这里插入图片描述

5.5 修改context.xml文件

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

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
	<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
	host="localhost"    
	port="6379"         
	database="0"         
	maxInactiveInterval="60" />

在这里插入图片描述

5.6 启动

启动顺序:

  1. redis
  2. tomcat
  3. nginx

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42601136/article/details/108671511