nginx反向代理实例

一. 准备工作

        1.1 ngnix的安装

nginx基本概念和安装-CSDN博客

        1.2 安装tomcat

        tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,适用于中小型系统和并发访问用户不是很多的情况。

        前往官网网站:Apache Tomcat® - Apache Tomcat 10 Software Downloads 下载tomcat压缩包,解压。

        解压后,进入解压后的bin目录下,执行startup.sh脚本,运行tomcat,默认启动端口8080。

        查看启动日志:

        在启动tomcat时报错 :

        报错1原因时java版本过低,需要升级版本。下面链接可以查看tomcat需要的java版本。Apache Tomcat® - Which Version Do I Want?

        报错2解决办法需要将JRE_HOME环境变量去掉,unset JRE_HOME。

        使用浏览器访问tomcat服务:

二. 实例一

         2.1 实现效果

        在浏览器中输入www.123.com,跳转到linux系统tomcat主页面。

        2.2 具体实现

  • 设置域名与IP的映射

        在windows的hosts文件中进行域名和nginx服务器ip对应关系的配置。

        域名解析:先到本地hosts中查找是否有对应关系,没有再到DNS服务器中查找。

        在hosts文件中配上(ip 域名)。

  • 在nginx进行请求转发的配置(反向代理配置)

         配置文件位置:

        配置文件修改:

演示:

说明:

        实际访问的ip和port是反向代理服务器的,但是得到的是运行在服务器的tomcat的资源。 

三. 实例二 

         3.1 实现效果

        使用nginx反向代理,根据访问的路径跳转到不同端口的服务器中去。nginx监听端口为9001。

        访问http://nginx服务器ip:9001/edu/ 直接跳转到,服务器ip:8080进程。

        访问http://nginx服务器ip:9001/vod/ 直接跳转到,服务器ip:8081进程。

        ip为云服务器公网ip。

        3.2 准备工作

  • 准备两个tomcat服务器,一个服务器监听在8080端口,另一个监听在8081端口。

         启动tomcat:进入解压的tomcat的bin目录下。执行./startup.sh脚本。

  • 创建文件夹和测试页面

        在tomcat8080目录的解压后的tomcat的webapp目录下建立edu文件夹,在edu目录下建立html文件。

        在tomcat8081目录的解压后的tomcat的webapp目录下建立vod文件夹,在vod目录下建立html文件。

        问题:我启动两个tomcat服务,但是使用客户端访问8081端口,访问超时。原因是:我的云服务器防火墙没有开放8081端口。 

         3.3 nginx具体配置

        在配置中新增一个server,运行ip为服务器ip,端口为9001。

        新增两个location,利用正则表达式,设置访问资源路径,然后对应到需要访问的ip和端口。

        修改完配置后,重新加载配置或者重启nginx服务器。

location指令说明:

        该指令用于匹配URL。

        语法如下:

location [ = | ~ | ~* | ^~ ] uri {

        ...

  • =:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
  • ~:用于表示uri包含正则表达式,区分大小写
  • ~*:用于表示uri包含正则表达式,不区分大小写
  • ^~:用于不包含正则表达式的uri前,要求nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,不再使用location块中的正则uri和请求字符串做匹配。

        注意:如果uri包含正则表达式,则必须要有~或~*标识。

         3.4 演示

        访问114.55.92.82:9001/edu/a.html,通过反向代理访问到了114.55.92.82:8080/edu/a.html。

          访问114.55.92.82:9001/vod/a.html,通过反向代理访问到了114.55.92.82:8081/edu/a.html。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++初阶知识——类和对象(下)

目录 1.构造函数深入 2.类型转换 3.static成员 4.友元 5.内部类 6.匿名对象 7.对象拷⻉时的编译器优化 1.构造函数深入 (1)前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式&#x…

C++迈向精通:模板中的引用与remove_reference原理

remove_reference 原理 模板中的引用参数 在模板中&#xff0c;双 &‘ 会被解析为“引用”&#xff0c;这个“引用”可以是“左值”引用&#xff0c;也可以是“右值”引用。 例如&#xff1a; template <typename T> void func(T &&a) {std::cout <&l…

conda 环境打包与使用

conda 环境导出 使用 Conda 打包环境&#xff0c;可以创建一个可重复使用的环境文件&#xff0c;便于在不同的机器上重新创建相同的环境。以下是具体的步骤&#xff1a; 1. 创建 Conda 环境 如果你还没有创建一个 Conda 环境&#xff0c;可以使用以下命令创建一个新环境&…

Unsloth 微调 Llama 3

本文参考&#xff1a; https://colab.research.google.com/drive/135ced7oHytdxu3N2DNe1Z0kqjyYIkDXp 改编自&#xff1a;https://blog.csdn.net/qq_38628046/article/details/138906504 文章目录 一、项目说明安装相关依赖下载模型和数据 二、训练1、加载 model、tokenizer2、…

从零开始接触人工智能大模型,该如何学习?

人工智能是计算机科学领域中最具前瞻性和影响力的技术之一。它是一种智慧型算法&#xff0c;能够模拟人类的思维过程&#xff0c;处理大量的数据和信息&#xff0c;从而发现隐藏在其中的规律和趋势。人工智能的应用范围非常广泛&#xff0c;包括语音识别、图像识别、自然语言处…

高精度减法(C++)

【题目描述】 求两个大的正整数相减的差。 【输入】 共2行&#xff0c;第1行是被减数a&#xff0c;第2行是减数b。每个大整数不超过200位&#xff0c;不会有多余的前导零。注意&#xff0c;a 可能小于 b。 【输出】 一行&#xff0c;即所求的差。 【输入样例】 99999999…

《简历宝典》14 - 简历中“项目经历”,实战讲解,前端篇

上一节我们针对项目经历做了内功式的讲解&#xff0c;为了加深读者的印象&#xff0c;可以更轻松的套用到自己的简历上&#xff0c;本章继续从前端开发、Java开发以及软件测试的三个角度&#xff0c;再以校招和初级、中级以及高级三个维度分别入手&#xff0c;以实战讲解的形式…

gihub导入gitee仓库实现仓库同步

昨天在GitHub里导入了gitee仓库&#xff0c;但是在仓库同步这里卡了很久&#xff0c;因为网上大多数都是从github导入gitee&#xff0c;然后github生成token放入实现同步&#xff0c;但是我找到一种更为方便的&#xff01; 1.首先找到项目文件下的.git文件里的config文件 2.在…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

Vue 和 React 框架实现滚动缓冲区

Vue 实现 <template><div id"app" scroll"handleScroll"><!-- 页面内容 --><div v-for"item in items" :key"item">{{ item }}</div></div> </template><script> export default {d…

dom4j 操作 xml 之按照顺序插入标签

最近学了一下 dom4j 操作 xml 文件&#xff0c;特此记录一下。 public class Dom4jNullTagFiller {public static void main(String[] args) throws DocumentException {SAXReader reader new SAXReader();//加载 xml 文件Document document reader.read("C:\\Users\\24…

基于jeecgboot-vue3的Flowable流程支持bpmn流程设计器与仿钉钉流程设计器-编辑多版本处理

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、前端编辑带有仿钉钉流程的处理 /** 编辑流程设计弹窗页面 */const handleLoadXml (row) > {console.log("handleLoadXml row",row)const params {flowKey: row.key,ver…

搜集日志。

logstash 负责&#xff1a; 接收数据 input — 解析过滤并转换数据 filter(此插件可选) — 输出数据 output input — decode — filter — encode — output elasticsearch 查询和保存数据 Elasticsearch 去中心化集群 Data node 消耗大量 CPU、内存和 I/O 资源 分担一部分…

四、GD32 MCU 常见外设介绍

系统架构 1.RCU 时钟介绍 众所周知&#xff0c;时钟是MCU能正常运行的基本条件&#xff0c;就好比心跳或脉搏&#xff0c;为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能&#xff0c;包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(H…

Docker修改Postgresql密码

在Docker环境中&#xff0c;对已运行的PostgreSQL数据库实例进行密码更改是一项常见的维护操作。下面将详述如何通过一系列命令行操作来实现这一目标。 修改方式 查看容器状态及信息 我们需要定位到正在运行的PostgreSQL容器以获取其相关信息。执行以下命令列出所有正在运行…

Mongodb多键索引中索引边界的混合

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第93篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

安全防御---防火墙双击热备与带宽管理

目录 一、实验拓扑 二、实验需求 三、实验的大致思路 四、实验过程 4、基础配置 4.1 FW4的接口信息 4.2 新建办公&#xff0c;生产&#xff0c;游客&#xff0c;电信&#xff0c;移动安全区域 4.3 接口的网络配置 生产区:10.0.1.2/24 办公区:10.0.2.2/24 4.4 FW4的…

极地生产力自主采样系统的观测:融池比例统计 MEDEA 融池比例数据集

Observations from the Autonomous Polar Productivity Sampling System. 极地生产力自主采样系统的观测结果 简介 该项目是美国国家航空航天局 ICESCAPE 大型项目的一部分&#xff0c;旨在研究浮游植物丰度的长期季节性变化与整个生长季节在波弗特海和楚科奇海测量到的海冰…

Spring与设计模式实战之策略模式

Spring与设计模式实战之策略模式 引言 在现代软件开发中&#xff0c;设计模式是解决常见设计问题的有效工具。它们提供了经过验证的解决方案&#xff0c;帮助开发人员构建灵活、可扩展和可维护的系统。本文将探讨策略模式在Spring框架中的应用&#xff0c;并通过实际例子展示…

Linux 驱动开发 举例

Linux驱动开发涉及编写内核模块或设备驱动程序&#xff0c;以便让Linux内核能够识别和控制硬件设备。以下是一个简单的Linux驱动开发示例&#xff0c;这个示例将展示如何创建一个简单的字符设备驱动。 示例&#xff1a;简单的字符设备驱动 1. 定义设备驱动结构 首先&#xf…