Nginx反向代理

news2024/11/15 10:45:34

代理概述

正向代理代理的对象是客户端,反向代理代理的是服务端,Nginx即可以实现正向代理,也可以实现反向代理。
正向代理

在这里插入图片描述
反向代理
在这里插入图片描述

正向代理案例

理论上Nginx可以支持正向代理上网,但是在实验中,域名访问有问题,尚未解决,只能使用ip上网

  • nginx配置

server {
  resolver 8.8.8.8;
  listen 8078;
  location / {
    proxy_pass $scheme://$http_host$request_uri;
  }
}
  • 浏览器配置
    在这里插入图片描述

  • 通过ip访问

在这里插入图片描述

  • 总结

客户端访问服务端,但是如果使用了代理,那么服务端能看到的只是代理发送过去的请求,也即$remote_addr变成代理服务器的ip了

反向代理的配置

Nginx反向代理模块的指令是由ngx_http_proxy_module模块进行解析,该模块在安装Nginx的时候已经自己加装到Nginx中了。

proxy_pass指令

用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式;
URL:为要设置的被代理服务器地址,包含传输协议(http,https://)、主机名称或IP地址加端口号、URI等要素。

语法proxy_pass URL;
默认值
位置location
  • 案例
# 172.41.100.15 nginx配置
server {
  listen 8078;
  location / {
    proxy_pass http://172.41.100.14:8090;
  }
  location /proxy {
    proxy_pass http://172.41.100.14:8090;
  }
  location /proxy2 {
    proxy_pass http://172.41.100.14:8090/;
  }
}
# 172.41.100.14 nginx配置
server {
  listen 8090;
  location / {
    root html;
    index index.html;
  }
}
  • 结果
  1. 访问http://172.41.100.15:8078

页面正常展示
在这里插入图片描述

  1. 访问http://172.41.100.15:8078/proxy

页面报404,因为配置的路径没有加/,nginx去172.41.100.14服务器的nginx安装目录下的html/proxy找index.html页面

2021/08/18 13:53:15 [error] 18911#0: *55 open() "/usr/local/nginx/html/proxy" failed (2: No such file or directory), client: 172.41.100.15, server: , request: "GET /proxy HTTP/1.0", host: "172.41.100.14:8090"

在这里插入图片描述

  1. 访问http://172.41.100.15:8078/proxy2

页面正常展示
在这里插入图片描述

proxy_set_header指令

用于更改Nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器

语法proxy_set_header field value;
默认值proxy_set_header Host $proxy_host;proxy_set_header Connection close;
位置http、server、location
  • 案例
# 172.41.100.15 nginx配置
server {
  #防止中文乱码
  charset utf-8;
  listen 8078;
  location / {
    proxy_set_header songhongwei 宋宏伟好帅;
    proxy_pass http://172.41.100.14:8090;
  }
}

# 172.41.100.14 nginx配置
server {
  #防止中文乱码
  charset utf-8;
  listen 8090;
  location / {
    default_type text/plain;
    return 200 $http_songhongwei;
  }
}
  • 访问http://172.41.100.15:8078/效果

在这里插入图片描述

proxy_redirect指令

用来重置头信息中的"Location"和"Refresh"的值,目的是为了隐藏服务端信息,否则客户端可以获取服务端相关信息。
当上游服务器返回的响应是重定向或刷新请求(如HTTP响应码是301或者302)时,proxy_redirect可以重设HTTP头部的location或refresh字段。

| 语法 | proxy_redirect redirect replacement;
proxy_redirect default;
proxy_redirect off; |
| — | — |
| 默认值 | proxy_redirect default; |
| 位置 | http、server、location |

  • proxy_redirect redirect replacement

redirect:目标,Location的值
replacement:要替换的值

  • proxy_redirect default;

将location块的uri变量作为replacement,
将proxy_pass变量作为redirect进行替换

  • proxy_redirect off;

关闭proxy_redirect的功能

  • 案例
# 172.41.100.15 nginx 配置
server{
  listen 8079;
  server_name localhost;
  location /{
    proxy_pass http://172.41.100.14:8090;
    proxy_redirect http://172.41.100.14  http://172.41.100.15;
  }
  location /proxy {
    proxy_pass http://172.41.100.14:8090;
  }
}

server {
  listen       80;
  server_name  localhost;
  location / {
    proxy_pass http://172.41.100.14;
  }
}

# 172.41.100.14 nginx配置
server {
  server_name localhost;
  listen 8090;
  location / {
    return 302 http://172.41.100.14;
  }
}
server {
  listen 80;
  server_name localhost;
  location /{
    root html;
    index index.html;
  }
}
  1. 访问http://172.41.100.15:8079/proxy

地址栏被重定向为http://172.41.100.14/,响应头的Location返回了服务端的信息。
在这里插入图片描述

  1. 访问http://172.41.100.15:8079/

地址栏被重定向为http://172.41.100.15/,响应头的Location未返回服务端的信息。
在这里插入图片描述

反向代理配置案例

在这里插入图片描述

代理的服务器内容不一致

如果服务器1、服务器2和服务器3的内容不一样,那我们可以根据用户请求来分发到不同的服务器。

# 172.41.100.15 nginx配置,用不同的location来区分请求,这里用端口来区分服务器,实际生产可能对应多台不同的nginx主机
server {
  listen          8082;
  server_name     localhost;
  location /server1 {
    proxy_pass http://172.41.100.14:9001/;
  }
  location /server2 {
    proxy_pass http://172.41.100.14:9002/;
  }
  location /server3 {
    proxy_pass http://172.41.100.14:9003/;
  }
}


# 172.41.100.14 nginx配置
server {
  listen          9001;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9001</h1>';
}
server {
  listen          9002;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9002</h1>';
}
server {
  listen          9003;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9003</h1>';
}
  • 访问http://172.41.100.15:8082/server1 返回172.41.100.14:9001
  • 访问http://172.41.100.15:8082/server2返回172.41.100.14:9002
  • 访问http://172.41.100.15:8082/server3返回172.41.100.14:9003

代理的服务器内容一致

代理服务内容一致,nginx相当于负载均衡器,这里先给出一个例子,具体的在负载均衡里详细说明

# 172.41.100.15 nginx配置,用不同的location来区分请求,这里用端口来区分服务器,实际生产可能对应多台不同的nginx主机
upstream backend{
        server 172.41.100.14:9001;
        server 172.41.100.14:9002;
        server 172.41.100.14:9003;
}
server {
        listen 8083;
        server_name localhost;
        location /{
                proxy_pass http://backend;
        }
}

# 172.41.100.14 nginx配置
server {
  listen          9001;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9001</h1>';
}
server {
  listen          9002;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9002</h1>';
}
server {
  listen          9003;
  server_name     localhost;
  default_type text/html;
  return 200 '<h1>172.41.100.14:9003</h1>';
}
  • 访问http://172.41.100.15:8083/并不断刷新,可以看到页面的内容在变化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

有奖报名|StarRocks 获开源热力值增速第一,有你的贡献

近日&#xff0c;由开放原子开源基金会、X-lab 开放实验室和阿里巴巴开源委员会联合出品的《2022 开源大数据热力报告》在云栖大会公布。StarRocks 荣登《2022开源大数据热力报告》Top 30&#xff0c;并作为数据查询与分析方向增速第一的项目受邀出席 11 月 17 日的线上圆桌讨论…

顺序表--C语言版(从0开始,超详细解析 ,小白一听就懂!!!)

目录 一、前言 &#x1f34e;什么是数据结构 &#x1f350;学习数据结构有什么用 二、顺序表概念 ------- &#xff08;线性表&#xff09; &#x1f349;什么是线性表 &#x1f353;顺序表概念详解 &#x1f4a6; 顺序表与数组的区别 三、顺序表详解 &#x1f34c;…

为数字化深水区“量身定制”,华为品质服务再迭代

作者 | 曾响铃 文 | 响铃说 因为工作数据没有及时更新、版本对不上&#xff0c;不得不带着文件和数据跑上跑下&#xff0c;与其他部门反复确认&#xff0c;拿回来最新的数据&#xff0c;才能开始安心工作——如果找不到人&#xff0c;工作就得等着&#xff0c;领导又在催&…

SpringBoot项目基础设施搭建

本文为《从零打造项目》系列第二篇文章&#xff0c;首发于个人网站。 《从零打造项目》系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 前言 准确点说&#xff0c;这不是《从零打造项目》系列的第一篇文章&#xff0c;模版代码生成的那个项目讲解…

【非纯小白勿进】计算机的基本操作

计算机的基本操作 ​ 追看了前面文章&#xff0c;你就会对于计算机已经有了一个初步的认识&#xff0c;那么下面我们就要来使用计算机了。 计算机中只有文件和文件夹 ​ 计算机中&#xff0c;只有两样东西&#xff0c;文件和文件夹。 文件夹&#xff1a;本身不存储数据内容…

为什么用php的人越来越少了?

首先这张图反映的只是某个编程语言的热门程度。 以下代表个人观点: php这几年热度下降的原因: 1.存活时间长,在互联网技术日新月异的时代,一些更先进的技术会吸引一部分开发者 2.存活时间长,为了对历史版本作出一定的兼容,函数库的体积增大,一定程度上加大了程序员的负担 …

FRNet:Feature Reconstruction Network for RGB-D Indoor Scene Parsing实验补充

FRNet做了大量的消融实验&#xff0c;这里仔细来分析一下。 1&#xff1a;ResNet backbone&#xff1a; 作者消融实验使用了ResNet34作为backbone来提取特征&#xff0c;将最后一层的输出简单相加起来&#xff0c;然后通过不断的上采样获得最终的输出。并且只在最后一层进行监督…

FAM DBCO, 6-isomer,DBCO-羧基荧光素琥珀酰亚胺酯-6-异构体

产品名称&#xff1a;DBCO-羧基荧光素琥珀酰亚胺酯-6-异构体 英文名称&#xff1a;FAM DBCO, 6-isomer 荧光素 (FAM) 是荧光染料之一。FAM 的这种衍生物含有环辛炔基团&#xff08;二苯并环辛炔&#xff0c;缩写为 DBCO 或 ADIBO&#xff09;&#xff0c;用于通过无铜、应变促…

MyBatis 关联映射

文章目录一、关联映射概述二、一对一查询1.association 元素2.嵌套查询实例演示3.嵌套结果集实例演示三、一对多查询1.collection 元素2.嵌套结果集实例演示四、多对多查询1.嵌套查询实例演示2.嵌套结果集实例演示五、自动补全 get、set 方法一、关联映射概述 在此之前&#x…

飞瞳引擎™集装箱AI检测云服务,集装箱信息识别功能免费,全球顶尖AI高泛化性,正常集装箱识别率99.98%,全球2000企业用户

党的二十大报告指出&#xff0c;加快发展物联网&#xff0c;建设高效顺畅的流通体系&#xff0c;降低物流成本。空箱闸口智慧监管为青岛港提高集装箱运输物流效率提供了保障。飞瞳引擎™AI集装箱识别检测云服务&#xff0c;自动化识别检测集装箱信息大幅降低物流成本提升效率&a…

EFK部署centos7.9(三)Kibana部署

系统类型&#xff1a;Centos7.9 节点IP&#xff1a; 192.168.11.140 软件版本&#xff1a;nginx-1.14.2、kibana-6.5.4-linux-x86_64.tar.gz 上传或者下载安装包 Wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz tar zvxf kibana-6.5.…

供应链解决方案SRM是什么?企业实施SRM有什么价值?

企业业务对外的两个最重要的出口就是广义的 “买”和“卖”。在“卖”的方面&#xff0c;企业为了使自己的产品和服务赢得市场、赢得客户&#xff0c;更为重视这方面的管理和更加投入了在市场上的力度。管理软件供应商纷纷推出了CRM产品&#xff0c;企业也开始利用这种管理思想…

字符串的算法题目

题目一&#xff1a; 描述 对于一个长度为 n 字符串&#xff0c;我们需要对它做一些变形。 首先这个字符串中包含着一些空格&#xff0c;就像"Hello World"一样&#xff0c;然后我们要做的是把这个字符串中由空格隔开的单词反序&#xff0c;同时反转每个字符的大小写…

RabbitMQ 服务启动失败问题小结(Windows环境)

RabbitMQ 服务启动失败问题小结&#xff08;Windows环境&#xff09; 最近在Windows环境上安装RabbitMQ服务时&#xff0c;踩了不少坑&#xff0c;往上的回答让人很崩溃&#xff0c;几乎一样的回答&#xff0c;起不到帮助作用&#xff1b;特此做个记录总结&#xff1b; *****…

Nginx缓存配置教程

问题引出 假设某电商平台商品详情页需要实现 700 QPS&#xff08;假设宽带是千兆宽带&#xff09; 千M局域网宽带网卡速率按照1000进位&#xff0c;所以1Gbps1,000,000,000bps125,000,000Bps≈119.21MB/s 当达到500QPS 的时候很难继续压测上去。 假设每个页面主体渲染所需要的…

java的static关键字及类加载顺序

Java中static可以修饰类、变量、方法甚至可以构成静态块&#xff0c;让我们来了解下它们各自的使用以及加载顺序吧。 基本用法 static关键字修饰类 java里面用static修饰内部类&#xff0c;普通类是不允许声明为静态的&#xff0c;只有内部类才可以。 public class StaticT…

苹果电脑硬盘读写软件有哪些?Tuxera NTFS2023mac读写硬盘软件

格式化是将硬盘重置到初始状态或者是转换硬盘格式所需的一项重要步骤&#xff0c;格式化可以解决大部分用户遇到的硬盘问题&#xff0c;不过在进行格式化之前&#xff0c;大家需要提前了解格式化的具体注意事项&#xff0c;以避免不必要的损失。下面本文就来着重介绍磁盘格式化…

windows xp 邮件服务器漏洞溢出

缓冲区溢出攻击过程概念解释&#xff1a;第一步&#xff1a;入侵着测试目标机的25和110端口第二步&#xff1a;入侵着测试目标机缓冲区溢出第三步&#xff1a;判断目标机器是否发生缓冲区溢出第四步&#xff1a;得到确切缓冲区溢出位置所在的区间。第五步&#xff1a;得到确切缓…

基于低代码开发平台搭建的生产制造管理系统

在现代化社会中&#xff0c;信息化管理模式早已成为企业管理的主流趋势。尤其是随着企业信息化的程度已经成为影响企业创新、发展以和企业经济效益的重要因素之后&#xff0c;生产管理信息化就变得至关重要。因此&#xff0c;拥有一套完备的生产制造管理系统对于提高企业的工作…

Nginx安全控制

安全隔离 通过代理分开了客户端到应用程序服务器端的连接&#xff0c;实现了安全措施。在反向代理之前设置防火墙&#xff0c;仅留一个入口供代理服务器访问。 使用SSL对流量进行加密 常用的http请求转变成https请求&#xff0c;因为http协议是明文传输数据&#xff0c;存在…