Nginx反向代理配置

一、介绍

        Nginx 的反向代理功能在现代网络架构中扮演着至关重要的角色。首先,它充当了客户端与后端服务器之间的中介。当客户端发送请求时,这些请求先到达 Nginx 服务器,Nginx 会根据预先设定的规则和配置,将请求准确地转发到相应的后端服务器。

        这种机制带来了诸多优势。一方面,它有效地隐藏了后端服务器的真实网络结构和细节,增强了系统的安全性和稳定性。另一方面,它为实现负载均衡提供了便利,能够智能地将大量请求分配到不同的后端服务器上,避免单个服务器过载,从而确保整个系统高效运行。

        在配置反向代理时,Nginx 提供了丰富且灵活的选项。可以轻松定义不同的代理规则,针对不同的域名、路径或其他条件进行精准的请求转发。同时,还可以进行各种优化设置,如缓存、压缩等,以提升数据传输效率和响应速度。

        此外,Nginx 的反向代理还具备高度的可扩展性和适应性。无论是应对不断增长的流量,还是整合新的后端服务,都能够通过简单的配置调整来实现,无需对整个系统架构进行大规模改动。

        总之,Nginx 的反向代理是一项强大而实用的技术,为构建高效、可靠和可扩展的网络应用提供了坚实的基础。它在众多场景中发挥着关键作用,助力企业和开发者打造出更优质的网络服务。

关于 Nginx的安装,可以参考:使用Docker安装Nginx

二、反向代理的应用场景

负载均衡

将请求分发到多个后端服务器上,提高系统的处理能力。例如,将用户的请求均匀地分配到多个 Web 服务器上。

隐藏真实服务器

客户端只与Nginx交互,不知道后端服务器的具体信息。比如,对外只暴露Nginx的地址,保护后端服务器的安全。

缓存静态资源

可以缓存一些静态文件,减少后端服务器的压力。比如,缓存图片、CSS、JS 等文件。

SSL 终止

在 Nginx 上处理 SSL 加密和解密,减轻后端服务器的负担。

多站点部署

通过 Nginx 反向代理可以实现一个服务器上部署多个网站。

灰度发布

可以逐步将流量切换到新的版本或服务器上。

故障转移

当某台后端服务器出现故障时,自动将请求切换到其他健康的服务器上。

三、反向代理配置

基于域名的反向代理

假设我们有两个域名,example1.com和example2.com。
Nginx 配置如下:

server {listen 80;server_name example1.com;location / {proxy_pass http://backend1.example.com;}
}server {listen 80;server_name example2.com;location / {proxy_pass http://backend2.example.com;}
}

当用户访问 example1.com 时,Nginx 会将请求反向代理到 http://backend1.example.com;而当访问 example2.com 时,请求则会被转发到 http://backend2.example.com 。

基于路径的反向代理

假设我们要将以 /api 开头的请求转发到后端服务 http://backend-api.example.com,其他请求保持不变。

Nginx 配置如下:

server {listen 80;server_name localhost;location / {root   html;index  index.html index.htm;}location /api {proxy_pass http://backend-api.example.com;}}

当用户访问比如 /api/users 时,Nginx 就会把该请求反向代理到 http://backend-api.example.com ,而访问其他路径如 /home 等就按常规处理。

基于负载均衡的反向代理

假设我们有三个后端服务器,分别是 backend1.example.com、backend2.example.com 和 backend3.example.com。

Nginx 配置如下:

http {upstream my_backends {server backend1.example.com;server backend2.example.com;server backend3.example.com;}server {listen 80;location / {proxy_pass http://my_backends;}}
}

在这个例子中,Nginx 会将请求按照一定的策略(通常是轮询)均衡地分发到这三个后端服务器上。

关于 Nginx负载均衡,大家可以参考:Nginx负载均衡配置

动静分离型反向代理

动静分离型反向代理是将动态内容和静态内容分别处理的一种反向代理方式,将静态资源(如图片、CSS、JavaScript 文件等)和动态内容(如由特定程序处理的请求)分别路由到不同的后端处理。

假设我们有一个前端服务器(Nginx)和两个后端服务器(Server1 和 Server2),其中 Server1 处理动态请求,Server2 处理静态请求。

在 Nginx 的配置文件中,定义一个上游服务器池,包含 Server1 和 Server2:

upstream servers {server Server1_IP:Server1_Port;server Server2_IP:Server2_Port;
}

配置动静分离的规则。对于静态资源(如图片、CSS、JavaScript 文件等),使用 proxy_pass 将请求转发到 Server2;对于动态请求(如 HTML、JSP、PHP 文件等),使用 proxy_pass 将请求转发到 Server1:

location /static {proxy_pass http://Server2_IP:Server2_Port;
}location / {proxy_pass http://Server1_IP:Server1_Port;
}

Server1:配置为处理动态请求的服务器,例如运行 Web 应用程序。

Server2:配置为处理静态请求的服务器,例如存储图片、CSS、JavaScript 文件等静态资源。

通过以上配置,Nginx 会根据请求的路径将动态请求转发到 Server1,将静态请求转发到 Server2。

四、location中关于反向代理的参数

proxy_pass

用于指定反向代理的目标服务器地址,可以是域名或 IP 地址。例如:proxy_pass http://backend_server。

proxy_pass http://backend_server

proxy_set_header

用于设置 HTTP 请求头,可将客户端的信息传递给后端服务器。例如:proxy_set_header Host $host。

roxy_set_header Host $host

proxy_connect_timeout

设置连接目标服务器的超时时间。

proxy_connect_timeout 10s

proxy_read_timeout

设置读取从目标服务器返回数据的超时时间。

proxy_read_timeout 30s

proxy_send_timeout

设置向目标服务器发送请求的超时时间。

proxy_send_timeout 20s

proxy_cache

用于设置反向代理缓存,提高响应速度。

proxy_cache mycache

proxy_cache_valid

配置缓存的有效时间。

proxy_cache_valid 200 30d

proxy_cache_bypass

指定不使用缓存的条件。

proxy_cache_bypass $cookie_user

proxy_redirect

控制是否自动重定向请求。

roxy_redirect default

proxy_set_header

可以设置更多的 HTTP 请求头。

roxy_set_header X-Forwarded-For $remote_addr

proxy_ssl_certificate 和 proxy_ssl_password

如果目标服务器使用 HTTPS,需要配置这些参数来进行加密连接。

proxy_ssl_certificate /path/to/certificate.pem
proxy_ssl_password password

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

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

相关文章

Goland GC

Goland GC 引用Go 1.3 mark and sweep 标记法Go 1.5 三色标记法屏障机制插入屏障删除写屏障总结 Go 1.8 混合写屏障(hybrid write barrier)机制总结 引用 https://zhuanlan.zhihu.com/p/675127867 Garbage Collection,缩写为GC,一种内存管理回收的机制…

OpenCV | 项目 | 虚拟绘画

OpenCV | 项目 | 虚拟绘画 捕捉摄像头 如果在虚拟机中运行&#xff0c;请确保虚拟机摄像头打开。 #include<opencv2/opencv.hpp>using namespace cv; using namespace std;int main() {VideoCapture cap(0);Mat img;while(1) {cap.read(img);imshow("Image"…

【小红书采集工具】根据搜索关键词批量采集小红书笔记,含笔记正文、笔记链接、发布时间、转评赞藏等

一、背景介绍 1.1 爬取目标 熟悉我的小伙伴都了解&#xff0c;我之前开发过2款软件&#xff1a; 【GUI软件】小红书搜索结果批量采集&#xff0c;支持多个关键词同时抓取&#xff01; 【GUI软件】小红书详情数据批量采集&#xff0c;含笔记内容、转评赞藏等&#xff0c;支持…

视频剪辑达人分享:一键批量置入随机封面,创意无限

在数字化媒体飞速发展的今天&#xff0c;视频内容已经成为我们表达创意、分享故事、传递信息的主要方式之一。而在视频制作过程中&#xff0c;封面作为视频的“脸面”&#xff0c;往往决定了观众是否愿意点击观看。因此&#xff0c;为视频选择合适的封面变得至关重要。 在大量…

在M1芯片安装鸿蒙闪退解决方法

在M1芯片安装鸿蒙闪退解决方法 前言下载鸿蒙系统安装完成后&#xff0c;在M1 Macos14上打开闪退解决办法接下来就是按照提示一步一步安装。 前言 重新安装macos系统后&#xff0c;再次下载鸿蒙开发软件&#xff0c;竟然发现打不开。 下载鸿蒙系统 下载地址&#xff1a;http…

[机器学习-04] Scikit-Learn机器学习工具包进阶指南:集群化与校准功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

【Git】Commit后进行事务回滚

起因 因为一直使用git add .&#xff0c;在学习pytorch中添加了一个较大的数据集后&#xff0c;导致git push失败&#xff0c;而这个大数据集并不是必须要上传到仓库的&#xff0c;但是因为自己在设置.gitignore前已经进行了git comit&#xff0c;所以&#xff0c;需要进行事务…

辅助驾驶激光雷达测试白板的重要性

随着自动驾驶技术的迅猛发展&#xff0c;辅助驾驶系统&#xff08;ADAS&#xff09;已成为现代汽车安全的重要组成部分。在这一系统中&#xff0c;激光雷达&#xff08;LiDAR&#xff09;扮演着至关重要的角色&#xff0c;它通过发射激光脉冲并接收反射回来的信号来检测车辆周围…

TCP的延时应答和捎带应答详解

一、延时应答 延时应答是指TCP接收方在接收到数据包后&#xff0c;并不立即发送确认&#xff08;ACK&#xff09;消息&#xff0c;而是等待一段时间&#xff0c;以期望在该时间段内收到更多的数据包&#xff0c;从而实现合并多个ACK消息为一个&#xff0c;减少网络中的确认消息…

企业网站从传统服务器迁移到弹性云有什么优势呢?

现代企业对于网站和应用程序的可用性和性能要求越来越高&#xff0c;传统基础设施可能无法满足这些需求。弹性云作为一种新兴的云计算服务模式&#xff0c;对于企业网站的运行和管理带来了许多优势。下面是企业网站从传统服务器迁移到弹性云的五大优势&#xff1a; 灵活弹性&a…

C语言(指针)4

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

vue+sortablejs来实现列表拖拽——sortablejs的使用

sortablejs官网:https://sortablejs.com/ 最近在看form-builder组件&#xff0c;发现里面有用到sortablejs插件&#xff0c;用于实现拖拽效果。 但是这个官网中的配置&#xff0c;实在是看不懂&#xff0c;太简单又太复杂&#xff0c;不实用。 下面记录一下我的使用&#xff…

vue3属性透传(透传 Attributes),支持多个根节点,且可以在JavaScript 中访问透传 Attributes

支持多个根节点&#xff0c;且可以在JavaScript 中访问透传 Attributes Index.vue: <script setup> import { ref, onMounted } from vue import Child from ./Child.vue import ./index.cssconst handleClick () > {console.log(1) }onMounted(() > {}) </s…

地磁暴红色预警来袭,普通人该如何应对?绝绝子的防护指南来了

近日&#xff0c;国家空间天气监测预警中心发布了一则令人瞩目的消息——地磁暴红色预警。这一预警不仅提醒我们地磁暴即将影响我国的电离层和低轨卫星&#xff0c;更让我们深刻认识到地球空间环境的脆弱性和复杂性。对于普通公众而言&#xff0c;地磁暴的概念可能相对陌生&…

python代码实现xmind思维导图转换为excel功能

目录 转换前xmind示例 运行代码转换后excel示例 python代码 转换前xmind示例 运行代码转换后excel示例 如果想要合并单元格内容&#xff0c;在后面一列参考输入 B2&C2&D2&E2 python代码 from xmindparser import xmind_to_dict import pandas as pd from openp…

Linux——综合实验

要求 按照上面的架构部署一个简单的web节点所有的服务器使用DNS服务器作为自己的DNS服务器 就是/etc/reslov.conf 中nameserver的值必须是途中dns服务器的地址所有的数据库都是用mysql应用 nfs共享导出在客户端(web服务器上)使用autofs在自动挂载&#xff0c;或者写入/etc/fsta…

QT+网络调试助手+TCP服务器

一、UI界面设计 二、单线程 代码设计 1、 查找合法的本地地址&#xff0c;用于当作服务器的IP地址 #include <QThread> #include <QTcpSocket> #include <QNetworkInterface> #include <QMessageBox>QList<QHostAddress> ipAddressesList QNe…

车规级低功耗汽车用晶振SG-9101CGA

车规级晶振SG-9101CGA属于爱普生9101系列&#xff0c;是一款可编程晶振。SG-9101CGA车规级晶振采用2.5x2.0mm封装&#xff0c;利用PLL技术生产&#xff0c;此款振荡器的频率范围从0.67M~170MHZ任一频点可选&#xff0c;步进1ppm&#xff0c;采用标准CMOS输出&#xff0c;最大输…

决策树的学习(Decision Tree)

1.对于决策树的概念&#xff1a; **本质上&#xff1a;**决策树就是模拟树的结构基于 if-else的多层判断 2.目的&#xff1a; 对实例进行分类的树形结构&#xff0c;通过多层判断&#xff0c;将所提供的数据归纳为一种分类规则。 3.优点&#xff1a; 1.计算量小&#xff0c;…

【高阶数据结构】LRU Cache -- 详解

一、什么是 LRU Cache LRU&#xff08;Least Recently Used&#xff09;&#xff0c;意思是最近最少使用&#xff0c;它是一种 Cache 替换算法。 什么是 Cache&#xff1f; 狭义的 Cache 指的是位于 CPU 和主存间的快速 RAM&#xff0c;通常它不像系统主存那样使用 DRAM 技术&…