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

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Nginx是一款高性能的Web服务器和反向代理服务器,可以用于向代理和反向代理向代理是代理客户端,反向代理是代理服务器。下面是nginx反向代理的介绍和示例: 1. 向代理 向代理是代理客户端,客户端向代理服务器发送请求,代理服务器再将请求发送给目标服务器,目标服务器将响应发送给代理服务器,代理服务器再将响应发送给客户端。向代理的作用是隐藏客户端的真实IP地址,保护客户端的隐私。 示例配置文件: ```nginx http { # 定义后端服务器的地址和端口号 upstream backend_server { server 192.168.1.1:8080; } # 定义向代理规则,将请求转发到后端服务器 server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 2. 反向代理 反向代理是代理服务器,客户端向代理服务器发送请求,代理服务器再将请求发送给目标服务器,目标服务器将响应发送给代理服务器,代理服务器再将响应发送给客户端。反向代理的作用是隐藏目标服务器的真实IP地址,保护目标服务器的安全。 示例配置文件: ```nginx http { # 定义反向代理规则,将请求转发到目标服务器 server { listen 80; location / { proxy_pass http://目标服务器IP地址:目标服务器端口号; } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willing卡卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值