欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx的正反向代理

程序员文章站 2022-05-26 11:02:16
...

Nginx正反向代理

引言:

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

1.Nginx简介

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

特点:

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

2. Nginx安装

2.1 下载Nginx

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

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

Nginx的正反向代理

2.2 启动Nginx

  • 双击nginx.exe

2.3 访问Nginx

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

Nginx的正反向代理

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

Nginx的正反向代理

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

Nginx的正反向代理

3.4 输入localhost进入项目首页

这是我项目的首页

Nginx的正反向代理

4.Nginx反向代理配置

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

4.1 解压tomcat7

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

Nginx的正反向代理

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中做标记

Nginx的正反向代理

Nginx的正反向代理

Nginx的正反向代理

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,会有两个服务器轮流交替工作;

  • 一个崩溃不影响另一个;

Nginx的正反向代理

Nginx的正反向代理

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的同级目录下

Nginx的正反向代理

5.3 启动Redis

在cmd中启动

redis-server.exe  redis.windows.conf

Nginx的正反向代理

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

Nginx的正反向代理

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" />

Nginx的正反向代理

5.6 启动

启动顺序:

  1. redis
  2. tomcat
  3. nginx

Nginx的正反向代理

Nginx的正反向代理