LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Nginx 实战: 什么是反向代理,如何配置

admin
2025年7月19日 23:21 本文热度 14

在互联网的庞大架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,发挥着至关重要的作用。其中,反向代理功能更是 Nginx 被广泛应用的核心原因之一。本文将深入探讨什么是反向代理,以及如何在 Nginx 中进行反向代理的配置。

一、反向代理的概念与原理

反向代理的定义

反向代理是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

正向代理 vs 反向代理

我们先来简单对比一下正向代理与反向代理的区别:

类型谁隐藏使用场景示例
正向代理
客户端
用户访问外部资源时隐藏自己
翻墙代理、公司上网代理
反向代理
服务端
外部用户访问内部服务时隐藏后端
CDN、负载均衡、Web 服务器

反向代理的核心思想是:客户端不知道真正的服务器是谁,所有请求都先发给反向代理服务器,由它转发到后端真实服务器,并将结果返回给客户端。

反向代理的作用

  • 负载均衡:当有大量客户端请求到达时,反向代理服务器可以根据预设的算法,将请求分发到不同的后端服务器上,避免单个服务器负载过高,提高整个系统的处理能力和稳定性 。
  • 安全性提升:隐藏后端真实服务器的 IP 地址,使客户端无法直接与后端服务器通信,降低了后端服务器遭受攻击的风险。同时,反向代理服务器还可以对请求进行过滤和验证,拦截恶意请求,如 SQL 注入、跨站脚本攻击(XSS)等。
  • 缓存加速:反向代理服务器可以缓存后端服务器返回的静态资源(如图片、CSS、JavaScript 文件等)和动态内容。当有相同的请求再次到达时,直接从缓存中返回数据,减少了后端服务器的压力,也加快了客户端获取数据的速度,提升用户体验。
  • 服务高可用:当某一台后端服务器出现故障时,反向代理服务器可以自动将请求转发到其他正常运行的服务器上,保证服务的连续性,实现服务的高可用性。
  • 统一入口:对外提供一个统一的访问地址,便于管理。

反向代理的工作原理

客户端向反向代理服务器发送请求,反向代理服务器根据配置的规则(如请求的 URL、客户端 IP 地址等),将请求转发到合适的后端服务器。后端服务器处理请求后,将响应结果返回给反向代理服务器,反向代理服务器再将响应结果返回给客户端。整个过程中,客户端并不知道真正处理请求的后端服务器是谁,它只与反向代理服务器进行交互。

二、Nginx 反向代理的配置

基本反向代理配置

假设你有一个运行在服务器端口为 3000 的服务,现在想通过域名 http://api.example.com 访问这个服务。

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

说明

  • listen 80:表示 Nginx 监听 80 端口。
  • server_name:指定域名,若没有域名或通过 IP 访问,可忽略此配置。
  • location / :定义请求的 URL 匹配规则,这里表示所有请求都将被代理到后端服务器。
  • proxy_pass:指定后端服务器的地址和端口。
  • proxy_set_header:设置请求头,用于传递原始信息给后端,例如:Host表示传递原始请求的域名,X-Real-IP表示获取客户端真实IP,X-Forwarded-For表示传递完整的代理路径,X-Forwarded-Proto表示传递后端请求使用的协议。

基于 URL 的反向代理配置

有时候,我们可能希望根据不同的 URL 将请求转发到不同的后端服务器。例如,将以/api开头的请求转发到一个 API 服务器,将其他请求转发到另一个 Web 服务器。

server {
    listen 80;
    server_name your_domain.com;

    location /api {
        proxy_pass http://api_server_ip:port;  # API服务器地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
        proxy_pass http://web_server_ip:port;  # Web服务器地址和端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

添加 SSL 支持(HTTPS)

如果你有 SSL 证书(比如 Let's Encrypt),可以添加 HTTPS 支持:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 强制跳转 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

负载均衡配置

Nginx 支持多种负载均衡算法,如轮询(默认)、加权轮询、IP 哈希等。下面以加权轮询为例,介绍如何配置负载均衡。

upstream backend_servers {
    server 192.168.1.101 weight=3;  # 权重为3
    server 192.168.1.102 weight=1;  # 权重为1
}

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

总结

反向代理是 Nginx 的重要功能之一,通过合理配置反向代理,我们可以实现负载均衡、提升安全性、加速服务响应等目标。在实际应用中,根据具体的业务需求和服务器架构,灵活运用 Nginx 的反向代理配置,能够打造出高性能、高可用的 Web 服务系统。


阅读原文:原文链接


该文章在 2025/7/21 10:48:19 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved