当前位置: 首页 > article >正文

【Nginx三】——Nginx实现反向代理

系列文章目录

【Nginx一】——Nginx介绍(正向代理 反向代理 负载均衡 动静分离)
【Nginx二】——Nginx常用命令 配置文件
Nginx如何处理请求


【Nginx三】——反向代理

  • 系列文章目录
  • 前言
  • 一、反向代理是什么?
  • 二、Nginx实现反向代理
    • 1.tomcat环境准备并进行访问
    • 2.通过域名访问tomcat
    • 3.通过域名不加端口号进行访问(实现反向代理)
  • 总结


前言

本篇博客主要介绍Nginx如何实现反向代理,会进行介绍什么是反向代理,以及进行实例实现反向代理。


一、反向代理是什么?

代理服务器来接收网络上请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上连接的客户端。

背景:首先有一个用户C,三台服务器S1、S2和S3,但S1对外网开放,S2和S3不对外网开放,还有一份资源D,资源D放在服务器S2和S3上。

用户C并不知道资源D在服务器S2和S3上面,他只知道访问服务器S1就可以得到资源D,于是他每次都是直接访问服务器S1,只不过提供给用户C资源的都是来自服务器S2或者S3.

反向代理对于用户C来说,他是不知道资源D具体在哪里,也不知道具体由谁提供。

对于服务器S1来说每次都接受用户的请求,然后再把请求根据调度策略交给提供资源D的服务器S2或者S3,对于服务器S2和S3来说同样也都不知道访问这份资源D的真实用户是谁,只是和服务器S1进行交互。

二、Nginx实现反向代理

实现反向代理示意图:
在这里插入图片描述

1.tomcat环境准备并进行访问

在Linux服务器上安装tomcat并进行启动,linux虚拟机的ip为192.168.60.123
在这里插入图片描述
通过ip+端口号8080访问tomcat服务器;成功访问的页面:
在这里插入图片描述

2.通过域名访问tomcat

在windows下的hosts文件中进行域名与ip的映射关系。C:\WINDOWS\system32\drivers\etc

Windows10上的host文件配置作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”。这个文件的主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定³。当我们在浏览器中输入一个网址时,浏览器会首先查找本地的hosts文件,如果找到了对应的IP地址,就直接访问该IP地址对应的服务器,否则就向DNS服务器发出请求,获取该网址对应的IP地址。

示例(如图:)

在这里插入图片描述
linux虚拟机的ip为192.168.60.123
在这里插入图片描述

这次通过域名www.test.com+端口号8080进行访问。

实现效果截图:
在这里插入图片描述

3.通过域名不加端口号进行访问(实现反向代理)

修改Nginx的配置文件,编辑nginx.conf文件,修改server模块。
首先nginx会监听80端口的请求,再匹配服务名是为192.168.60.123的请求,匹配上之后再根据location的匹配规则进行匹配。要将请求传递到 HTTP 代理服务器,使用 proxy_pass 指令可以看这篇博客进行详细了解Nginx如何处理请求

代码如下(示例):

server {
        listen 80;
        server_name 192.168.60.123;
         location / {
         proxy_pass http://192.168.60.123:8080;  
             }
 }
 

配置好之后通过域名www.test.com进行访问

实现效果截图:
在这里插入图片描述


总结

不难看出反向代理对于客户端来说不知道目的服务器,客户端只知道请求代理服务器能够获取到需要的资源。而代理服务器可以通过相应的配置拦截前往我们后端服务器的客户端的请求,通过这样做,代理服务器可以保护目的服务器的身份并作为对安全攻击的额外防御。


http://www.kler.cn/a/4617.html

相关文章:

  • Java Stream流操作List全攻略:Filter、Sort、GroupBy、Average、Sum实践
  • 华为2024嵌入式研发面试题
  • dockerfile实现lnmp
  • W25Q64-FLASH
  • 计算机网络八股文学习笔记
  • Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图
  • Redis高频40问
  • 【Spring Cloud Alibaba】11.链路追踪(SkyWalking)
  • shiro
  • 【03173】2020年10月高等教育自学考试-软件开发工具
  • odoo owl 边学边练 动态控制子组件
  • 基于AI分词模型,构建一个简陋的Web应用
  • 【从零开始学习 UVM】3.5、UVM TestBench架构 —— UVM Sequencer [uvm_sequencer]
  • 关于三角面正反和剔除cull
  • 全局事件总线
  • 区块链系统:签名
  • 带你弄明白c++的4种类型转换
  • 电商一站式管理后台必备工具:电商API接口,网络爬虫、数据抓取、批量处理订单
  • C++中常见的容器类使用方法举例(vector、deque、map、set)
  • 根据时间戳获取总用时(天时分秒)
  • VectorDraw Developer Framework 10.1003.1 Crack
  • 海心沙元宇宙音乐会虚拟主持人玩法再升级,虚拟动力技术全程助力
  • [powered with AI] 2023.3.24 考研英语学习 2014 英语二翻译
  • 如何使用 Python Pandas 更新行和列
  • 微信小程序实战:智能水印相机小程序开发附源码
  • 大文件分片上传的实现【前后台完整版】