
# 通过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]。
     表1301重定向和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配置前   
   ![](https://support.huaweicloud.com/dns_faq/zh-cn_image_0000001321721905.png "点击放大")
   图2修改Nginx配置后   
   ![](https://support.huaweicloud.com/dns_faq/zh-cn_image_0000001321563773.png "点击放大") 

2. 执行以下命令，重新加载配置文件并重启Nginx服务。 **/usr/local/nginx/sbin/nginx -s reload**
   **/usr/local/nginx/sbin/nginx -s reopen**
   
 
#### 步骤3：在控制台设置域名解析到云服务器IP
1. 进入[公网域名列表页面](https://console.huaweicloud.com/dns/?#/dns/publiczones)。
2. 在页面右上角，单击"创建公网域名"。
3. 在待添加解析记录的域名所在行，单击操作列的"管理解析"。
4. 在记录集列表页，单击列表上方的"添加记录集"。
   - **记录类型**：选择A类型记录集。
   
   - **主机记录**：置空。
   
   - **记录值**：填写为云服务器的公网IP地址。
    
 
#### 步骤4：验证URL转发是否生效
执行以下命令验证URL转发是否生效：
**curl -v http://www.example.cn**
如[图3]所示。回显信息和预设的URL地址一致，说明设置的URL转发已生效 。
图3添加域名的A类型记录集   
![](https://support.huaweicloud.com/dns_faq/zh-cn_image_0000001270771850.png "点击放大")
