4、Nginx 配置实例-反向代理

文章目录

  • 4、nginx 配置实例-反向代理
    • 4.1 反向代理实例一
      • 4.1.1 实验代码
    • 4.3 反向代理实例二
      • 4.3.1 实验代码


【尚硅谷】尚硅谷Nginx教程由浅入深

志不强者智不达;言不信者行不果。

4、nginx 配置实例-反向代理

4.1 反向代理实例一

实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080

4.1.1 实验代码

1) 启动一个 tomcat,浏览器地址栏输入 192.168.39.250:8080,出现如下界面

在这里插入图片描述
向linux系统中导入一个apache-tomcat-7.0.70.tar.gz文件,放在/usr/src/文件夹中

解压到当前文件夹

[root@centos7-101 src]# tar -xvf apache-tomcat-7.0.70.tar.gz 

启动Tomcat

[root@centos7-101 src]# cd apache-tomcat-7.0.70/bin/
[root@centos7-101 bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/src/apache-tomcat-7.0.70
Using CATALINA_HOME:   /usr/src/apache-tomcat-7.0.70
Using CATALINA_TMPDIR: /usr/src/apache-tomcat-7.0.70/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/src/apache-tomcat-7.0.70/bin/bootstrap.jar:/usr/src/apache-tomcat-7.0.70/bin/tomcat-juli.jar
Tomcat started.

进入日志文件,查看启动日志,Ctrl + Z推出日志

[root@centos7-101 bin]# cd ..
[root@centos7-101 apache-tomcat-7.0.70]# cd logs/
[root@centos7-101 logs]# tail -f catalina.out 
九月 07, 2023 6:04:02 上午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory /usr/src/apache-tomcat-7.0.70/webapps/manager
九月 07, 2023 6:04:02 上午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /usr/src/apache-tomcat-7.0.70/webapps/manager has finished in 117 ms
九月 07, 2023 6:04:02 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
九月 07, 2023 6:04:02 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
九月 07, 2023 6:04:02 上午 org.apache.catalina.startup.Catalina start
信息: Server startup in 1844 ms

查看运行进程

[root@centos7-101 logs]# ps -ef | grep tomcat

防火墙中开放本地端口号8080,让外部访问到linux中的Tomcat

[root@centos7-101 logs]# firewall-cmd --add-port=8080/tcp --permanent
success
[root@centos7-101 logs]# firewall-cmd --reload 
success
[root@centos7-101 logs]# firewall-cmd --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client sshports: 80/tcp 8080/tcpprotocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

在windows中通过浏览器访问 http://192.168.39.250:8080/,linux中的ip地址写自己的

在这里插入图片描述
2) 通过修改本地 host 文件,将 www.123.com 映射到 127.0.0.1

在这里插入图片描述
在 windows 系统的host文件进行域名和ip对应关系的配置

文件地址:C:\Windows\System32\drivers\etc
修改内容:192.168.39.250 www.123.com

在这里插入图片描述
配置完成之后,我们便可以通过 www.123.com:8080 访问到第一步出现的 Tomcat 初始界面。

在这里插入图片描述
那么如何只需要输入 www.123.com 便可以跳转到 Tomcat 初始界面呢?

便用到 nginx的反向代理。

3) 在 nginx.conf 配置文件中增加如下配置

[root@centos7-101 ~]# cd /usr/local/nginx/conf/server {listen       80;server_name  192.168.39.250;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;proxy_pass http://127.0.0.1:8080;index  index.html index.htm;}

重新启动nginx

[root@centos7-101 sbin]# ./nginx -s reload

如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故访问该域名时会跳转到 127.0.0.1:8080 路径上。

在浏览器端输入 www.123.com 结果如下:

在这里插入图片描述

4.3 反向代理实例二

实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中nginx 监听端口为 9001,

访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8080
访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8081

4.3.1 实验代码

第一步,准备两个 tomcat,一个 8080 端口,一个 8081 端口,并准备好测试的页面

新建两个文件夹

[root@centos7-101 src]# mkdir tomcat8080
[root@centos7-101 src]# mkdir tomcat8081

向两个文件夹导入tomcat文件,解压文件

[root@centos7-101 src]# tar -xvf apache-tomcat-7.0.70.tar.gz 

停止tomcat

[root@centos7-101 bin]# ps -ef | grep tomcat
[root@centos7-101 bin]# kill -9 22942

进入新创建的tomcat配置文件,修改端口号

[root@centos7-101 bin]# cd /usr/src/tomcat8081/apache-tomcat-7.0.70/conf/
[root@centos7-101 conf]# vim nginx.conf
<Server port="8015" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

向两个文件夹中准备测试页面,创建新文件夹
edu:/usr/src/tomcat8080/apache-tomcat-7.0.70/webapps
vod:/usr/src/tomcat8081/apache-tomcat-7.0.70/webapps

开放防火墙端口

[root@centos7-101 bin]# sudo firewall-cmd --add-port=8081/tcp --permanent 
success
[root@centos7-101 bin]# firewall-cmd --reload 
success

第二步,修改 nginx 的配置文件,实现监听9001端口,根据不同路径跳转不同端口

配置文件地址:
在 http 块中添加 server{}
location 指令说明
该指令用于匹配 URL。
语法如下:
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字
符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location
块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~
标识。

    server {listen       9001;#    listen       somename:8080;server_name  192.168.39.250;location ~/edu/ {#        root   html;#        index  index.html index.htm;proxy_pass http://127.0.0.1:8080:}location ~/vod/ {proxy_pass http://127.0.0.1:8081:}}

重新加载nginx

[root@centos7-101 sbin]# ./nginx -s reload

开放防火墙端口

[root@centos7-101 bin]# sudo firewall-cmd --add-port=9001/tcp --permanent 
success
[root@centos7-101 bin]# firewall-cmd --reload 
success

效果:http://192.168.39.250:9001/edu/a.html
在这里插入图片描述

http://192.168.39.250:9001/vod/a.html

在这里插入图片描述

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

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

相关文章

ARM+Codesys runtime核心板+底板解决方案

产品特点&#xff1a; 丰富的通讯接口&#xff0c;满足多种场合控制和通讯需求 四核工业级处理器&#xff0c;高性能&#xff0c;低功耗&#xff0c;高可靠性 机身无风扇设计&#xff0c;外壳小巧 搭载内核 100% 自主化大型实时操作系统 SylixOS&#xff0c;支持 POSIX …

DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?

​2023年8月16日~18日&#xff0c;第14届中国数据库技术大会&#xff08;DTCC 2023&#xff09;于北京隆重召开&#xff0c;拓数派受邀参与本次大会&#xff0c;PieCloudDB 技术专家邱培峰在大会做了《云原生虚拟数仓 PieCloudDB ETL 方案设计与实现》的主题演讲&#xff0c;详…

vscode 画流程图

文章目录 1、安装插件 draw2、新建文件3、开始画图4、另存为图片 vscode可以画流程图了&#xff0c;只需要安装插件就可以了。 1、安装插件 draw 2、新建文件 3、开始画图 4、另存为图片

数据库设计:防止MySQL字段名与关键字相撞,保护数据完整性!

MySQL是一款广泛应用的关系型数据库管理系统&#xff0c;对于数据库设计而言&#xff0c;字段名的选择是至关重要的一环。不小心选择了和MySQL关键字相同的字段名可能导致严重的数据完整性问题。下面将深入探讨如何防止MySQL字段名与关键字相撞&#xff0c;以保护数据的完整性。…

qt day 6

登录界面 #include "window.h" #include<QDebug> #include<QIcon> Window::Window(QWidget *parent) //构造函数的定义: QWidget(parent) //显性调用父类的构造函数 {//判断数据库对象是否包含了自己使用的数据库Student.dbif(!db.contains(&…

网安周报|Chaes恶意软件的新Python变种针对银行和物流行业

1、Chaes恶意软件的新Python变种针对银行和物流行业 银行和物流业正受到名为Chaes的恶意软件的重新设计变种的冲击。Chaes于2020年首次出现&#xff0c;它的目标是拉丁美洲&#xff08;尤其是巴西&#xff09;的电子商务客户&#xff0c;以窃取敏感的财务信息。该恶意软件的最新…

【React学习】React高级特性

1. 函数式组件和类组件区别 函数式组件 函数式组件是一种简单的组件定义方式&#xff0c;它是一个以JavaScript函数为基础的组件。 可以把函数式组件理解为纯函数&#xff0c;它的输入为props&#xff0c;输出为JSX。函数式组件没有状态&#xff0c;也没有生命周期。 functio…

NFTScan NFT API 在 NFTFi 开发中的应用

NFTFi 是“NFT”和“Finance”的缩写&#xff0c;旨在“增加 NFT 流动性&#xff0c;提供现金流”&#xff0c;NFTFi 是为 NFT 提供金融实用性的去中心化协议和应用程序的新兴生态系统&#xff0c;及使用 NFT 作为基础层在其上建设经济基础设施。 在实践中&#xff0c;NFTFi 协…

【数据结构】串

串 串的顺序实现简单的模式匹配算法KMP算法KMP算法的进一步优化 串的顺序实现 初始化 #define MaxSize 50 typedef char ElemType;//顺序存储表示 typedef struct{ElemType data[MaxSize];int length; }SString;/*** 初始化串*/ void InitString(SString *string) {for (int …

TensorFlow 03(Keras)

一、tf.keras tf.keras是TensorFlow 2.0的高阶API接口&#xff0c;为TensorFlow的代码提供了新的风格和设计模式&#xff0c;大大提升了TF代码的简洁性和复用性&#xff0c;官方也推荐使用tf.keras来进行模型设计和开发。 1.1 tf.keras中常用模块 如下表所示: 1.2 常用方法 …

第7章_瑞萨MCU零基础入门系列教程之UART

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

Java学习笔记——34多线程01

多线程 实现多线程进程和线程的区别多线程的实现方式方式一&#xff1a;继承Thread类设置线程名称线程调度线程控制线程生命周期 方式二&#xff1a;实现Runnable接口 实现多线程 进程和线程的区别 进程&#xff1a;是正在运行的程序 是系统进行资源分配和调用的独立单位每一…