Nginx的正反向代理

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Nginx的正反向代理

Nginx正反向代理

引言:

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

@[toc]

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

图片.png

图片.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
23天前
|
监控 应用服务中间件 测试技术
确保正则表达式在 Nginx 代理中的准确性和稳定性
【10月更文挑战第19天】总之,正则表达式在 Nginx 代理中具有重要作用,但要确保其准确性和稳定性需要付出一定的努力和关注。通过以上方法的综合运用,我们可以提高正则表达式配置的可靠性,为用户提供更好的服务体验。
|
3天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
10天前
|
前端开发 应用服务中间件 定位技术
|
15天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
5天前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
1月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
145 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
23天前
|
应用服务中间件 API nginx
使用正则表达式实现 Nginx 代理
【10月更文挑战第19天】在不断发展的互联网技术中,掌握正则表达式在 Nginx 代理中的应用是非常重要的。不断探索和实践,将有助于我们在实际工作中更好地运用这一技术,提升项目的质量和效率。
|
23天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
1月前
|
存储 缓存 监控
|
1月前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
65 4