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

Nginx 请求转发配置指南

Nginx 请求转发配置指南

1. 简介

Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。本文档将介绍如何使用 Nginx 配置请求转发,并解释一些常用的配置参数。

2. Nginx 安装

在配置之前,确保你的系统已经安装了 Nginx。如果未安装,可以使用以下命令进行安装:

在 CentOS/RHEL 上:
sudo yum install nginx -y
在 Ubuntu/Debian 上:
sudo apt-get update
sudo apt-get install nginx -y

安装完成后,使用以下命令启动 Nginx:

sudo systemctl start nginx

3. 配置文件路径

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf。另外,站点级别的配置文件可以放在 /etc/nginx/conf.d/ 目录中。

4. 配置转发

4.1 基本配置

以下是一个基本的 Nginx 请求转发配置示例,它会监听服务器的某个端口,并将请求转发到指定的目标服务器。

server {
    listen 8888;  # 监听本地服务器的8888端口
    server_name _;  # 通配所有主机头

    location / {
        proxy_pass http://192.168.101.30:9000;  # 将请求转发到目标服务器
        proxy_set_header Host $host;  # 保留原始主机头
        proxy_set_header X-Real-IP $remote_addr;  # 获取客户端的真实IP地址
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 支持X-Forwarded-For头
        proxy_set_header X-Forwarded-Proto $scheme;  # 支持X-Forwarded-Proto头,指示请求协议
    }
}
4.2 参数解释
  • listen:指定 Nginx 监听的端口。在上面的例子中,Nginx 监听 8888 端口。

  • server_name:用于匹配客户端请求的 Host 头信息。可以设置为特定的域名、IP 地址或使用 _ 通配符匹配所有请求。

  • location:定义 Nginx 如何处理指定路径的请求。在本例中,/ 表示匹配所有路径。

  • proxy_pass:指定要将请求转发到的后端服务器。它可以是一个 URL,也可以是一个上游服务器组。

  • proxy_set_header:这些指令用于设置传递给后端服务器的请求头:

    • Host:保留客户端请求中的主机头。
    • X-Real-IP:获取客户端的真实 IP 地址,并传递给后端服务器。
    • X-Forwarded-For:记录请求经过的代理服务器 IP 地址链。
    • X-Forwarded-Proto:指示请求使用的协议(HTTP 或 HTTPS)。

5. 重新加载配置

每次修改 Nginx 配置文件后,都需要重新加载配置才能生效:

sudo nginx -s reload

你可以使用以下命令测试 Nginx 配置文件的语法是否正确:

sudo nginx -t

6. 示例场景

6.1 场景一:端口转发

将所有从本地服务器 8888 端口的请求转发到 http://192.168.101.30:9000

server {
    listen 8888;
    server_name _;

    location / {
        proxy_pass http://192.168.101.30:9000;
    }
}
6.2 场景二:基于路径的转发

将访问 /api 路径的请求转发到 http://backend-server/api,其他路径则返回 404。

server {
    listen 8080;
    server_name _;

    location /api/ {
        proxy_pass http://backend-server/api/;
    }

    location / {
        return 404;
    }
}

7. 参考资料

  • Nginx 官方文档
  • Nginx 配置教程

通过这份文档,技术同事可以了解如何配置 Nginx 进行请求转发,并能熟悉几个关键配置项的用途。如果有更多问题,建议参考官方文档或联系有经验的同事讨论。

相关文章:

  • Amazon Aurora:面向高吞吐量云原生关系型数据库的设计考虑
  • 性能测试工具
  • LLM之循环神经网络(RNN)
  • VMware Workstation Pro 下载(无需注册账号)
  • 使用 GPT-SoVITS 克隆声音,很详细
  • 蓝桥杯 Java B 组之总结与模拟题练习
  • Asp.Net Core MVC 中级开发教程
  • 计算机视觉:卷积神经网络(CNN)基本概念(二)
  • 09综合算法练习题
  • C++ 中的栈与堆:区别与使用场景详解
  • NLP 八股 DAY1:BERT
  • 双轴伺服电机驱动控制器AGV、AMR专用双伺服电机驱动控制器解决方案
  • AI大模型+RPA
  • 分享在职同时准备系统分析师和教资考试的时间安排
  • autogen_core中的DataclassJsonMessageSerializer类
  • Mybatis高级(动态SQL)
  • 基于CanMV IDE 开发软件对K210图像识别模块的开发
  • 2025 (ISC)²CCSP 回忆录
  • 【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用
  • AWS上基于高德地图API验证Amazon Redshift里国内地址数据正确性的设计方案
  • 国家主席习近平任免驻外大使
  • 建筑瞭望|从黄浦江畔趸船改造看航运设施的升级与利用
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力
  • 美国前总统拜登确诊前列腺癌
  • 慢品巴陵,看总编辑眼中的岳阳如何书写“山水人文答卷”
  • 中国旅马大熊猫“福娃”和“凤仪”启程回国