nginx 反向代理配置详解

Nginx 反向代理是一种常用的部署策略,用于将客户端请求转发到内部网络中的一个或多个服务器,这些服务器直接处理请求并返回响应给Nginx,再由Nginx转交给客户端。这种设置可以提高网站的可用性和安全性,同时也能实现负载均衡、缓存、SSL 终端等功能。下面是Nginx反向代理配置的详细解析:

基础配置示例

首先,你需要在Nginx的配置文件中定义一个server块来配置反向代理。通常这个文件位于/etc/nginx/sites-available/目录下,或者可能是nginx.confhttp块内,具体取决于你的Nginx安装和配置方式。

Nginx

1server {
2    listen 80; # 监听的端口,这里是HTTP的默认端口80
3    server_name yourdomain.com; # 你希望接收请求的域名或IP地址
4
5    location / { # 匹配所有以'/'开头的请求
6        proxy_pass http://backend_server; # 后端服务器地址,可以是域名或IP加端口
7        proxy_set_header Host $host; # 将请求头中的Host字段传给后端服务器
8        proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实IP传给后端服务器
9        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 附加客户端IP到X-Forwarded-For头中
10        proxy_set_header X-Forwarded-Proto $scheme; # 如果使用HTTPS,将协议信息传给后端
11    }
12}

配置项解释

  • listen 80;: 指定Nginx监听的端口,这里配置的是80端口,即HTTP的默认端口。
  • server_name yourdomain.com;: 设置该server块服务的域名或IP地址。
  • location / { ... }: 定义URL匹配规则,这里的/表示匹配所有请求。
    • proxy_pass http://backend_server;: 指定请求应被转发到的后端服务器地址。backend_server应替换为实际的后端服务器地址(例如http://192.168.1.10:8080)。
    • proxy_set_header指令用于设置传递给后端服务器的HTTP头部,这些头部信息对于日志记录、安全性和应用识别非常重要。
      • Host: 保留原始请求的主机名,确保后端可以正确解析请求。
      • X-Real-IPX-Forwarded-For: 记录客户端的实际IP地址,对于访问控制和日志分析很有用。
      • X-Forwarded-Proto: 当使用HTTPS时,告知后端原始请求使用的协议,以便后端可以正确生成链接等。

高级配置

  • 负载均衡:可以在proxy_pass指令中指定一个服务器列表来实现负载均衡,如proxy_pass http://backend_servers;,其中backend_servers是一个之前定义好的 upstream 名称,里面包含了多个后端服务器地址。

    Nginx
    1upstream backend_servers {
    2    server backend1.example.com;
    3    server backend2.example.com;
    4    server backend3.example.com;
    5}
  • SSL 终端:可以在Nginx上终止SSL连接,然后以未加密的形式将请求转发给后端服务器。

    Nginx
    1server {
    2    listen 443 ssl;
    3    ssl_certificate /path/to/cert.pem;
    4    ssl_certificate_key /path/to/key.pem;
    5    ...
    6}
  • 缓存配置:可以利用Nginx的缓存功能,对某些静态资源或响应进行缓存,提高访问速度和减轻后端压力。

  • 访问控制与安全:通过allowdeny指令控制访问,以及使用ssl_protocolsssl_ciphers等指令增强SSL安全配置。

以上就是Nginx反向代理的基本配置和一些高级选项。根据实际需求,你可能需要调整或增加更多的配置项。记得每次修改配置文件后,都需要执行sudo nginx -t来测试配置文件的语法是否正确,然后使用sudo nginx -s reload命令来重新加载配置。

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

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

相关文章

数据分析——分群思维、RFM实现用户分群

分群思维 按照某个指标(可以是用户生命周期、活跃度、付费)来划分用户 分群好处: 1.是用户精细化运营的基础,也就是说只有分群了才可以针对每一个群进行运营策略 2.体现用户的差异性,比较不同层级的差异更能发现问题 …

每期一个小窍门 k8s版本的 Prometheus + grafana + alertmanager 三件套部署监控落地

首先部署prometheus 首先是pvc apiVersion: v1 kind: PersistentVolumeClaim metadata:name: prometheus-data-pvcnamespace: monitor spec:accessModes:- ReadWriteManystorageClassName: "data-nfs-storage"resources:requests:storage: 10Gi然后接着 cluster-ro…

CSS+Canvas绘制最美星空(一闪一闪亮晶晶效果+流星划过)

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><style>body,html {margin: 0;padding: 0;ov…

商业应用中的AI模型选择:开源还是闭源?

评价一个AI模型“好不好”、“有没有发展”&#xff0c;往往绕不开“开源”和“闭源”这两条不同的发展路径。这两种路径各有优劣&#xff0c;从数据隐私、商业应用和社区参与三个方面来看&#xff0c;我们可以更全面地理解它们的差异和影响。 方向一&#xff1a;数据隐私 开…

【Vue】v-on事件绑定指令

作用&#xff1a; 注册事件 添加监听 提供处理逻辑 使用Vue时&#xff0c;如需为DOM注册事件&#xff0c;及其的简单&#xff0c;语法如下&#xff1a; // 内联语句&#xff1a;就是一段可执行代码 // 内联语句是在模板中写代码&#xff0c;所以它是可以直接访问到里面的数…

Android12 将成果物生成到system和vendor分区

最近工作中遇到这么个事情&#xff0c;之前项目中留存的动态库是生成在vendor分区中&#xff0c;现在需要在system_ext分区中也生成&#xff0c;以便Android的系统进程也能访问这个动态库。 因此&#xff0c;需要修改对应动态库项目的Android.bp cc_library_shared { name: &qu…

20 VUE学习:插件

介绍 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。下面是如何安装一个插件的示例&#xff1a; import { createApp } from vueconst app createApp({})app.use(myPlugin, {/* 可选的选项 */ })一个插件可以是一个拥有 install() 方法的对象&#xff0c;也可以直接…

CNAS软件测试公司作用分享,如何获取CNAS软件测试报告?

在软件测试行业&#xff0c;CNAS认可和CNAS软件测试公司是不可忽视的关键词。CNAS认可是指中国合格评定国家认可委员会对特定领域组织、机构或公司的能力和资质进行的认可过程。该认可遵循国际标准及相关法律法规&#xff0c;是评定组织或实验室技术能力和专业水平的权威认可&a…

ctfshow web入门 嵌入式 bash cpp pwn

kali转bash shell方法 方便我们本地 bash脚本教程 下面这个代码是bash脚本 #!/bin/bashOIFS"$IFS"IFS"," //表示逗号为字段分隔符set $QUERY_STRING //将参数传入数组Args($QUERY_STRING)IFS"$OIFS" //恢复原始IFS值if [ "$…

2024年5月28号PMP每日三题含答案

2024年5月28号PMP每日三题含答案 1.项目经理与项目干系人开会&#xff0c;获得关于如何最好地向施工现场输送用品的信息和知识。这使用的是哪种沟通方法类型&#xff1f; A.交互式沟通 B.内部沟通 C.拉式沟通 D.推式沟通 1.解析&#xff1a;A是参考答案。开会是交互式沟通。知…

【考研数学】李艳芳900比李林880难吗?值得做吗?

差不多&#xff0c;只能说基础没搞好刷这两个都很费劲 李艳芳900题把每个章节题目划分为ABC三个难度级别&#xff0c;题目选取的难度较大也比较新颖&#xff0c;计算量也非常接近考研趋势&#xff0c;原创性很高&#xff0c;比较适合过完一轮的同学继续做补充和强化 880算是比…

Java 数组的基本使用【Array】

目录 含义语法格式语句特点数组的长度数组的元素打印数组显示数组数组的复制扩展示例【12】 含义 数组&#xff08;array&#xff09;是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同的数据类型&#xff0c;可以用一个统一的数…

cesium绘制编辑区域

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf token记得换成您自己的&#xff01;&#xff01;&#xff01; <t…

代码随想录(二叉树)

二叉树的递归遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> list new ArrayList<>();if(rootnull) {return list;}else {traversal(list,root);}return list;}public void traversal(List<Integer> l…

如何培养元技能?

如何培养元技能&#xff1f; 一、引言 在当今社会&#xff0c;仅仅依靠某一专业技能是远远不够的。我们需要拓宽自己的能力和视野&#xff0c;从而更好地应对日新月异的社会发展和工作需求。在这个过程中&#xff0c;培养元技能变得至关重要。元技能不仅有助于我们在各个领域中…

【全开源】驾校管理系统源码(FastAdmin+ThinkPHP)

一款基于FastAdminThinkPHP开发的驾校管理系统&#xff0c;驾校管理系统(DSS)主要面向驾驶学校实现内部信息化管理&#xff0c;让驾校管理者和工作人员更高效、更快捷的完成枯燥无味的工作&#xff0c;让工作更有条理。改变驾校传统的手工或半手工Excel文档管理的工作方式。多驾…

JavaScript数据类型;属性,对象,方法;var,let,const,局部变量,全局变量

JavaScript数据类型&#xff1a; 值类型(基本类型)&#xff1a;字符串&#xff08;String&#xff09;、数字(Number)、布尔(Boolean)、空&#xff08;Null&#xff09;、未定义&#xff08;Undefined&#xff09;、Symbol。 引用数据类型&#xff08;对象类型&#xff09;&a…

PG主从切换

文章目录 一、 不再需要配置recovery.conf文件二、 备库执行基础备份时新的命令行选项-R三、 如何生成standby.signal文件四、初次主备切换流程1、主库停止2、备库提升为新主库&#xff0c;对外提供服务3、新主库修改pg_hba.conf文件4、原主库新建$PGDATA/standby.signal文件5、…

嵌入式进阶——HID协议

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 USB烧录USB HID协议USB协议组成通讯流程 官方USB HID范例文件说明修改PC端的显示 兼容库函数HID键盘USB调试工具USB 描述符设备描述…

mysql登录报错 Client does not support authentication protocol requested by server

mysql登录报错 Client does not support authentication protocol requested by server 在使用 MySQL 数据库时&#xff0c;你可能会遇到以下错误消息&#xff1a; ERROR 1251 (08004): Client does not support authentication protocol requested by server; consider upgr…