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.mzph.cn/bicheng/10222.shtml

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

相关文章

浅谈如何自我实现一个消息队列服务器(8)——编写客户端部分

文章目录 一、客户端部分涵盖3大核心类1.1、ConnectionFactory 类1.2、Connection 类1.3、Channel 类 二、3级类结构优势三、客户端实现逻辑3.1、ConnectionFactory3.1.1、ConnectionFactory类所含字段3.1.2、ConnectionFactory类所含方法 3.2、Connection3.2.1、Connection类所…

proxySQL 安装与配置

# 官网下载 https://www.proxysql.com/documentation/installing-proxysql/ > cd ~/Downloads # 使用 dpkg 命令来安装下载的 .deb 包 > sudo dpkg -i proxysql_2.6.2-debian12_amd64.deb # 如果 dpkg 命令报告缺少依赖关系或安装过程中遇到问题,可以尝试运…

MySQL-双主复制

mysql 双主复制: 实现和MHA(高可用架构)相同的效果。 使用keepalived实现先双主热备,防止单点故障的主从结构。 两台mysql互做主从,各自安装keepalived实现热备,其他从服务器和热备的虚拟IP建立主从连接mys…

Linux下安装mysql8.0(以rpm包安装)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! Linux下安装mysql8.0(以rpm包安装)https://myweb.myskillstree.cn/125.html 目录 1、查操作系统信息 2、下载mysql 8.0.34的rpm包 …

MySQL中获取指定日期区间内所有日期

在数据库应用开发中,经常需要根据给定的日期范围获取区间内的每一天日期,这对于统计分析、报表生成、任务调度等领域至关重要。MySQL作为广泛应用的关系型数据库管理系统,提供了丰富的日期函数和查询技巧来实现这一需求。本文将深入探讨如何在…

【Anaconda 3 】Jupyter Notebook 的安装配置及使用

Jupyter Notebook 的安装配置及使用 一、引言 Jupyter Notebook 是一种交互式笔记本,它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中,并支持多种编程语言,如 Python、R、Julia 等。它在数据科学、机器学习和教育领域中得到…

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,一种内存管理回收的机制…

条件平差——以水准网平差为例 (python详细过程版)

目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、原理概述 条件平差的函数模型和随机模型为: A V + W = 0

大模型时代,程序员如何卷?

最近在看电影《碟中谍7》,该片讲述了特工伊森亨特尝试与一个被称为智体的全能人工智能作战,其可以即时访问任何在线网络,他和他的团队成员试图找回控制人工智能智体所必需的两部分钥匙并将其摧毁的故事。 在剧中,智体是一个虚拟反…

文旅行业| 某景区导游培养和管理项目成功案例纪实

——整合导游资源并进行统一管理,构建完善的培养与管理机制,发挥景区导游价值 【客户行业】文旅行业;景区;文旅企业 【问题类型】人才培养;人员管理 【客户背景】 南方某5A级景区,作为国内极具代表性和特…

学习使用jQuery将光标移动到textarea的末尾

学习使用jQuery将光标移动到textarea的末尾 代码 代码 $(document).ready(function(){var textarea $(#your-qipa-id); // 替换为你的textarea IDtextarea.focus(); // 将焦点设置到textarea// 获取textarea的值的长度var len textarea.val().length;// 使用setSelectionRan…

【python】python中的argparse模块,教你如何自定义命令行参数

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

intellij idea中build project与build module以及rebuild module的区别与联系

IntelliJ IDEA是一个功能强大的Java集成开发环境(IDE)。它提供了几个与构建相关的操作,包括: Build Project: - 这将构建整个项目,包括其中的所有模块。 - 它将编译所有已修改的源文件,并重新生成输出文件(如.class文件)。 - 这通常用于确保整个项目的代码是最新的,并且可以正…

Openssl X509证书从HexStream中解析

整体思路 从hex 转换成字节流 然后从字节流中进行解析 You have access to the raw certificate in memory. In the case that you have access to the raw encoding of the certificate in memory, you can parse it as follows. This is useful if you have stored raw cer…

【Pip】pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]解决方案

pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED] 大家好 我是寸铁👊 总结了一篇pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]✨ 喜欢的小伙伴可以点点关注 💝 报错 今天在安装第三方包时报错如下: 解决方案 本质上是需要指定信任的镜像…

开启异步线程的方法

1,开启异步线程,在启动类上加注解: 2,自定义线程池: Configuration public class PromotionConfig {Beanpublic Executor generateExchangeCodeExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExec…

搜维尔科技:【案例分享】Xsens用于工业制造艺术创新设计平台

用户名称:北京理工大学 主要产品:Xsens MVN Awinda惯性动作捕捉系统 在设计与艺术学院的某实验室内,通过Xsens惯性动作捕捉,对人体动作进行捕捉,得到人体三维运动数据,将捕到的数据用于后续应用研究。…

蓝桥杯备战9.拼数

P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题作对了&#xff0c;但是题解看到更好的 我写的史 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],h[…

x_t格式介绍

x_t格式 X_T格式&#xff0c;通常被称为Parasolid文件格式&#xff0c;是一种用于3D CAD数据交换的文件格式。Parasolid本身是一个几何建模内核&#xff0c;由Siemens PLM Software开发和维护&#xff0c;广泛应用于许多主流CAD、CAM、CAE系统中&#xff0c;如SolidWorks、Sol…

小心电子合同这个坑:手写签名图片

一、引言 在数字化浪潮的推动下&#xff0c;电子合同因其便捷性和高效性受到广泛应用。然而&#xff0c;在使用电子合同的过程中&#xff0c;一个看似简单的签名方式——手写签名图片&#xff0c;却可能带来意想不到的法律风险。本文将详细解析这一陷阱&#xff0c;并为大家提…