一、什么是请求转发

Linux请求转发是指将客户端发来的网络请求,按照一定规则重新定向到另一个服务器或端口进行处理。它通常被部署在流量入口处,用户无感知,但实际服务由后端服务器提供,类似于“前台帮你转接电话,但你以为接电话的就是前台本人”。

二、请求转发的两种类型

类型 原理 地址栏变化 典型应用
隐性转发 反向代理(proxy_pass) 不变 负载均衡、端口统一
显性转发 HTTP重定向(301/302) 改变 域名迁移、URL跳转

三、核心配置方法

  1. 隐性转发(反向代理)- Nginx示例
server {
    listen 80;
    server_name example.com;
    
    location /api {
        proxy_pass http://backend-server:8080;
        proxy_set_header Host $host;
    }
}

当用户访问example.com/api时,Nginx将请求透明地转发给backend-server:8080,用户地址栏仍是example.com

  1. 显性转发(URL重定向)- Nginx示例
server {
    listen 80;
    server_name old-site.com;
    return 301 http://new-site.com$request_uri;
}

用户访问旧域名时,浏览器自动跳转到新域名,地址栏发生变化。

四、Linux层面的端口转发

除了Nginx等应用层工具,Linux内核层面的iptables也可实现请求转发(仅限端口级别,无法处理HTTP路径):

将访问本机8080端口的请求转发到192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE

这种方式是隐性转发的底层实现,适合简单的端口映射场景。

五、两种方案对比

对比项 隐性转发(反向代理) 显性转发(重定向) iptables转发
地址栏变化 不变 改变 不变
处理层级 应用层(HTTP) 应用层(HTTP) 传输层(TCP)
可处理URL路径 支持 支持 不支持
SEO影响 不传递权重 传递原URL权重 不涉及

一句话总结:需要路径判断和地址栏不变用Nginx反向代理;需要域名更换和SEO转移用301重定向;纯端口映射用iptables。 另外,可以借助 80KM 端口流量转发程序,搭建流量中转节点,所有外网访问经过节点再回源,彻底隐藏真实 IP。支持 80、443 常用网页端口,兼容各大系统。Example Domain一句话总结:需要路径判断和地址栏不变用Nginx反向代理;需要域名更换和SEO转移用301重定向;纯端口映射用iptables。 另外,可以借助 80KM 端口流量转发程序,搭建流量中转节点,所有外网访问经过节点再回源,彻底隐藏真实 IP。支持 80、443 常用网页端口,兼容各大系统。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐