当前位置: 代码网 > 服务器>服务器>缓存 > Nginx正向代理与反向代理详解

Nginx正向代理与反向代理详解

2025年07月24日 缓存 我要评论
当然可以,以下是对 nginx 正向代理与反向代理 的详细解析,包括概念、工作机制、配置示例、使用场景和区别等内容,适用于开发、运维及网络基础学习场景。nginx正向代理与反向代理一、什么是代理(pr

当然可以,以下是对 nginx 正向代理与反向代理 的详细解析,包括概念、工作机制、配置示例、使用场景和区别等内容,适用于开发、运维及网络基础学习场景。

nginx正向代理与反向代理

一、什么是代理(proxy)?

代理是一种网络服务,客户端通过代理服务器间接访问目标资源。根据请求的方向不同,代理分为:

类型说明
正向代理代理客户端访问外部资源(“我替你去”)
反向代理代理外部用户访问内部服务器(“你来找我,我替你找它”)

二、正向代理(forward proxy)

定义:

客户端并不直接访问目标服务器,而是把请求交给代理服务器,由代理服务器转发请求并返回响应。

工作流程:

[客户端] → [nginx正向代理] → [目标服务器]
                             ↓
                    [响应返回到客户端]

使用场景:

  • 访问被屏 蔽的网站(如科学上网)
  • 客户端隐藏真实 ip
  • 缓存加速访问外部内容

示例配置(nginx):

# nginx.conf
events {}

http {
    server {
        listen 8888;

        resolver 8.8.8.8;

        location / {
            proxy_pass $scheme://$http_host$request_uri;
            proxy_set_header host $http_host;
            proxy_set_header x-real-ip $remote_addr;
        }
    }
}

使用方式(客户端设置代理):

浏览器或 curl 设置代理为:http://<nginx-ip>:8888

三、反向代理(reverse proxy)

定义:

客户端访问代理服务器,代理根据配置将请求转发到后端真实服务器(upstream),客户端无感知。

工作流程:

[客户端] → [nginx反向代理] → [后端服务器]
                            ↓
                   [响应返回到客户端]

使用场景:

  • 实现负载均衡
  • 实现 https 网关 / tls 卸载
  • 内网服务暴露给公网
  • 提供统一入口,隐藏真实服务器结构

示例配置(nginx):

http {
    upstream backend {
        server 192.168.1.101:8080;
        server 192.168.1.102:8080;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
            proxy_set_header host $host;
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
        }
    }
}

四、正向 vs 反向代理对比总结

比较项正向代理(forward proxy)反向代理(reverse proxy)
代理的对象客户端服务器(后端)
请求目标客户端指定的外部网站内部真实服务
常用目的帮助客户端访问目标保护服务器、统一入口
客户端感知明确知道自己使用了代理无需知道后端结构
配置位置客户端需配置代理服务端配置即可
应用场景翻墙、匿名访问、绕过限制负载均衡、内网服务暴露、缓存

五、反向代理的扩展应用

功能说明
负载均衡多个后端服务器自动轮询分发流量
https 网关客户端连接为 https,后端可为 http
安全隔离仅暴露代理,隐藏真实服务 ip
静态 + 动态分离静态资源由 nginx 提供,动态由后端处理
缓存优化可配置缓存减少后端负载(如 cdn)

六、附加示例:基于域名转发

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

    location / {
        proxy_pass http://192.168.1.100:8080;
    }
}

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

    location / {
        proxy_pass http://192.168.1.200:8081;
    }
}

总结一句话

  • 正向代理 是“我找别人帮我出去”,常用于“访问外部”;
  • 反向代理 是“别人来找我,我帮他找内部”,常用于“服务入口统一、隐藏后端”。

如果你还想了解:

  • 正反向代理中的缓存策略
  • 配合 https 的配置方式
  • 与防火墙 / dns / cdn 的协同机制
    我也可以继续补充。是否需要一张图帮助你更直观理解两者结构?

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com