通过Nginx搭建自建URL转发

概述

本文主要介绍如何通过Nginx的转发功能来自行搭建URL转发服务器,实现域名转发功能。

配置前提

  1. 本文使用工具为 Nginx ,且确认 http_rewrite_module 是开启的,一般默认为开启状态。

  2. Nginx安装配置方法,安装包编译安装:

    #下载安装包
    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    #解压
    tar -zxvf nginx-1.18.0.tar.gz
    cd nginx-1.18.0
    
    ./configure --prefix=/usr/local/nginx #配置时更换为实际希望安装路径即可
    make && make install
    
    #安装完后验证是否安装成功
    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

使用场景

根据使用场景不同,分为以下三个使用场景:

说明

url.dns-example.com为跳转前域名,www.aliyun.com为跳转后域名(配置时请更换为实际业务域名)

场景一:将url.dns-example.com完全转发到www.aliyun.com

例如,访问url:http://url.dns-example.com/a.txt 需要跳转到 http://www.aliyun.com/a.txt

配置过程:

  1. 配置nginx.conf文件,文件在安装文件时填写的路径位置,即--prefix=填入的路径。

  2. 修改server模块中的server_namelocation /模块的内容:

  • 修改server_name标签为跳转前域名,实际配置请填入实际业务域名。

  • location / 模块下添加 return 302 http://www.aliyun.com$request_uri;(实际配置请填入实际业务域名)

    说明

    重定向目前分为301永久重定向,302临时重定向,若您网站不涉及搜索引擎技术,则选择302临时重定向即可。

    配置前:

    image

    配置后:

    22

    配置内容参考:

    server {
        
        server_name url.dns-example.com; # url.dns-example.com改为跳转前的域名
    
        location / {
            return 302 http://www.aliyun.com$request_uri; # http://www.aliyun.com 改为跳转后域名
        }
    }
  1. 重启服务

    cd /usr/local/nginx/sbin #实际操作时更换为安装时配置的路径
    ./nginx -s reload
  1. 解析配置

    Nginx服务配置完毕后,需要将跳转前的域名解析指向到Nginx所在服务器IP上。即需要在域名的DNS服务商处添加一条url.dns-example.com(配置时更换为实际跳转前域名)的A记录指向到47.94.XX.XX配置时更换为实际Nginx所在服务器)。

  • 以云解析为例,详细步骤参考添加解析记录,大致步骤如下:

    • 登录云解析DNS产品控制台

    • 前往 域名解析 - 权威域名 - 单击需要配置解析的域名进入 解析设置 页面。

    • 单击 添加记录 ,进行如下解析配置。

      image..png

  1. 验证效果

    #在服务器上运行,域名请填写您实际业务域名。
    curl -v http://url.dns-example.com/a.txt

    33

场景二:将url.dns-example.com完全转发到www.aliyun.com/b/

例如,访问http://url.dns-example.com/a.txt 需要跳转到 http://www.aliyun.com/b/a.txt

具体配置步骤参考场景一,nginx.conf配置内容参考:

server {
    
    server_name url.dns-example.com; # url.dns-example.com改为跳转前的域名

    location / {
        return 302 http://www.aliyun.com/b$request_uri; # http://www.aliyun.com 改为跳转后域名
    }
}

场景三:将url.dns-example.com/xxx.xxx完全转发到http://www.aliyun.com

例如,访问http://url.dns-example.com/xxx.xxx需要跳转到http://www.aliyun.com

具体配置步骤参考场景一,nginx.conf配置内容参考:

server {
    
    server_name url.dns-example.com; # url.dns-example.com改为跳转前的域名

    location / {
        return 302 http://www.aliyun.com; # http://www.aliyun.com 改为跳转后域名
    }
}