文档首页/ 云解析服务 DNS/ 最佳实践/ 通过Nginx配置URL转发
更新时间:2024-07-31 GMT+08:00
分享

通过Nginx配置URL转发

操作场景

用户服务器上部署了多个网站放置在不同目录下,或者购买了多个服务器部署了不同的网站,访问这些网站时可以配置域名转发到不同目录URL,即配置URL转发。

例如用户部署了博客、新闻、活动、应用商店等多个网站,可以为每个网站配置独立的域名转发到不同的URL进行访问。

本节操作介绍通过Nginx实现URL转发的操作步骤。

背景知识

URL转发一般分为URL显性转发和URL隐性转发,本节介绍的Nginx实现URL转发即URL显性转发。

  • URL显性转发(Explicit URL Forwarding)
    • 显性转发是通过HTTP重定向实现的,通常采用的是301重定向或302重定向技术。通过显性转发将原URL重定向到新URL,从而使访问原URL的所有请求转发到新的URL地址。详细内容请参见表1
      表1 301重定向和302重定向对比

      重定向类型

      301重定向(HTTP 301 Moved Permanently)

      302重定向(HTTP 302 Found)

      持久性

      永久性重定向,表示资源已被永久移动。

      临时性重定向,表示资源的移动是暂时的。

      用途

      • 网站迁移:当网站从一个域名或URL迁移到另一个域名或URL时。
      • 域名变更:当企业更改其域名或子域名时。
      • 网站结构调整:当网站进行重大结构调整,导致大量URL变化时。
      • 临时网站迁移:当网站进行临时迁移或维护时。
      • A/B测试:在进行网站测试或比较不同页面效果时。
      • 临时URL变更:在某些情况下,可能需要临时更改URL,但不希望永久更改

      SEO影响

      有助于传递原URL的SEO价值(如链接权重)到新的URL,维护网站的搜索引擎排名。

      不会传递原URL的SEO价值到新的URL,搜索引擎可能会认为这是临时的,不会更新其索引。

      浏览器和缓存

      重定向结果会被浏览器缓存,用户在刷新时会直接访问新的URL。

      重定向结果通常不会被浏览器缓存,或者缓存时间较短,用户在刷新时可能会重新进行重定向。

    • 显性转发是指DNS服务器明确配置了转发规则,将来自特定IP地址或网络的查询请求转发给指定的另一台DNS服务器。这种方式下,DNS管理员可以精确控制哪些查询需要被转发,以及转发到哪个服务器。
    • 显性转发可以用于优化DNS查询的性能,例如,将来自某个地理位置的查询转发到该地区的DNS服务器,或者将特定类型的查询转发给专门的服务器。
  • URL隐性转发(Implicit URL Forwarding)

    隐性URL转发是用的是iframe框架技术,是指DNS服务器在没有明确配置转发规则的情况下,自动将无法解析的查询请求转发给其他DNS服务器。这种方式通常发生在主DNS服务器无法回答某个查询时,它会将请求转发给上级DNS服务器,直到找到能够解析该查询的服务器。

    隐性转发是DNS查询的默认行为,确保了即使在没有显性转发规则的情况下,DNS查询也能够被正确处理。

步骤1:在云服务器上安装Nginx

本节操作使用工具为Nginx,且确认http_rewrite_module是开启的,一般默认为开启状态。

以CentOS 7系列为例,安装Nginx操作步骤如下:

  1. 安装依赖包。

    yum install -y gcc-c++

    yum install -y pcre pcre-devel

    yum install -y zlib zlib-devel

    yum install -y openssl openssl-devel

  2. 下载并解压安装包。

    wget http://nginx.org/download/nginx-1.20.1.tar.gz

    tar -zxvf nginx-1.20.1.tar.gz

  3. 安装Nginx。

    更换命令中“/usr/local/nginx”为实际希望安装路径。

    cd nginx-1.20.1

    ./configure --prefix=/usr/local/nginx

    make && make install

  4. 安装完后验证是否安装成功。

    cd /usr/local/nginx/sbin

    ./nginx -t

    出现如下内容为安装成功 。

    nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok 
    nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful

步骤2:在云服务器上配置Nginx实现URL转发

以下步骤以访问测试域名www.example.cn跳转到华为云官网https://www.huaweicloud.com/xxx为例。

  1. 打开Nginx配置文件,修改server模块中的server_name和location参数配置。

    执行以下命令编辑nginx.conf文件,请将命令中路径替换为安装nginx的实际路径。

    vi /usr/local/nginx/conf/nginx.conf

    server_name:访问的域名

    location:跳转的url地址。其中301是永久跳转,302是临时跳转,本例中使用的是302。具体差异请参考背景知识,并根据实际需求修改。

    图1中域名和URL仅为示例,请根据实际需求替换域名和URL地址。

    图1 修改Nginx配置前
    图2 修改Nginx配置后
  1. 执行以下命令,重新加载配置文件并重启Nginx服务。

    /usr/local/nginx/sbin/nginx -s reload

    /usr/local/nginx/sbin/nginx -s reopen

步骤3:在控制台设置域名解析到云服务器IP

  1. 登录DNS管理控制台,在左侧导航栏点击“公网域名”。
  1. 单击“创建公网域名”,将域名添加至DNS控制台。
  2. 点击域名进入解析记录集页面。
  3. 单击“添加解析记录集”。
    • 主机记录置空。
    • 记录集类型选择A类型记录集。
    • 记录集的值填写为云服务器的IP地址。

步骤4:验证URL转发是否生效

执行以下命令验证URL转发是否生效:

curl -v http://www.example.cn

图3所示。回显信息和预设的URL地址一致,说明设置的URL转发已生效 。

图3 添加域名的A类型记录集

相关文档