详解Nginx域名转发到域名,配置指南与实战应用

2026-09-04 04:27:39 113阅读
本文详解了Nginx域名转发的核心概念与实战应用,旨在帮助读者掌握域名到域名的配置技巧,文中介绍了新旧域名更替、多域名统一入口等常见应用场景,随后,提供了详尽的配置指南,重点解析了server_nameproxy_passrewrite等关键指令的用法,并通过具体实战案例,演示了如何实现HTTP重定向与反向代理,本文能助读者快速上手Nginx域名转发,提升Web服务架构的灵活性。

在日常的网站部署与服务器运维中,我们经常会遇到这样的需求:将访问某个域名的请求,自动导向到另一个域名、特定的端口或是后端的服务器上,这时候,“域名转发”就成了必不可少的技术手段,而在众多Web服务器中,Nginx凭借其高性能、低资源消耗和灵活的配置,成为了实现域名转发的首选工具。

本文将深入探讨Nginx域名转发的核心概念,并提供常见场景的配置实战。

详解Nginx域名转发到域名,配置指南与实战应用

什么是Nginx域名转发?

Nginx域名转发,本质上是通过Nginx的反向代理功能实现的,当客户端(如浏览器)访问某个域名时,请求会先到达Nginx服务器,Nginx根据请求的域名或路径特征,将请求“转发”给后端的真实服务器,获取响应后再返回给客户端。

这种方式带来的好处是显而易见的:

  1. 隐藏后端服务:用户只能看到Nginx的入口,无法直接访问后端服务,提升了安全性。
  2. 灵活的架构调度:后端服务可以随时更换IP或端口,只需修改Nginx配置即可,前端域名保持不变。
  3. 统一SSL证书管理:只需在Nginx层配置HTTPS,后端服务可继续使用HTTP。

Nginx域名转发的核心指令

在Nginx配置中,实现域名转发主要依赖两个指令:

  • server_name:用于匹配客户端请求的域名。
  • proxy_pass:用于指定请求被转发到的目标地址。
  • location:用于匹配请求的URI路径。

常见配置场景实战

下面我们通过几个常见的实战场景,来看看Nginx域名转发是如何配置的。

场景1:基础域名到IP+端口的转发

假设我们有一个域名 www.example.com,我们希望将其转发到同一台服务器上运行在 8080 端口的Tomcat服务上。

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

场景2:不同路径转发到不同服务

有时我们需要根据访问的路径,将请求分发到不同的后端服务。/api/ 的请求交给后端Java服务,/static/ 的请求交给本地的静态文件服务。

server {
    listen 80;
    server_name www.example.com;
    # 匹配 /api/ 开头的请求,转发到后端API服务
    location /api/ {
        proxy_pass http://192.168.1.100:8001;
    }
    # 匹配 /static/ 开头的请求,转发到静态资源服务
    location /static/ {
        proxy_pass http://192.168.1.101:80;
    }
    # 其他所有请求,转发到前端Vue/React应用
    location / {
        proxy_pass http://192.168.1.102:3000;
    }
}

场景3:域名到域名的重定向(URL跳转)

有时候我们不需要代理请求,而是希望直接让浏览器跳转到另一个域名,比如我们希望将旧域名 old-domain.com 直接跳转到新域名 new-domain.com

server {
    listen 80;
    server_name old-domain.com;
    # 返回301永久重定向
    return 301 https://new-domain.com$request_uri;
}

进阶配置:传递客户端真实信息

在默认情况下,Nginx转发请求时,后端服务器接收到的IP地址是Nginx服务器的IP,而不是用户的真实IP,为了让后端服务获取用户的真实IP、访问的域名等信息,我们需要在Nginx配置中添加以下请求头:

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        # 传递客户端真实IP
        proxy_set_header X-Real-IP $remote_addr;
        # 传递完整的代理链路IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 传递客户端访问的真实域名
        proxy_set_header Host $http_host;
        # 传递客户端原始请求协议
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Nginx的域名转发功能十分强大,通过简单的几行配置,就能实现复杂的路由调度,无论是单机多服务的端口分发,还是跨服务器集群的负载均衡,Nginx都能游刃有余地完成任务。

温馨提示:在修改完Nginx配置文件后,请务必不要忘记执行 nginx -t 检查语法是否正确,然后再执行 nginx -s reload 重新加载配置使其生效,掌握好Nginx域名转发,将为你构建高可用的Web架构打下坚实的基础。

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。