概述
本文主要介紹如何通過Nginx的轉發功能來自行搭建URL轉發服務器,實現域名轉發功能。
配置前提
本文使用工具為 Nginx ,且確認 http_rewrite_module 是開啟的,一般默認為開啟狀態。
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
配置過程:
配置
nginx.conf
文件,文件在安裝文件時填寫的路徑位置,即--prefix=填入的路徑。修改server模塊中的server_name和location /模塊的內容:
修改server_name標簽為跳轉前域名,實際配置請填入實際業務域名。
在location / 模塊下添加
return 302 http://www.aliyun.com$request_uri
;(實際配置請填入實際業務域名)說明重定向目前分為301永久重定向,302臨時重定向,若您網站不涉及搜索引擎技術,則選擇302臨時重定向即可。
配置前:
配置后:
配置內容參考:
server { server_name url.dns-example.com; # url.dns-example.com改為跳轉前的域名 location / { return 302 http://www.aliyun.com$request_uri; # http://www.aliyun.com 改為跳轉后域名 } }
重啟服務
cd /usr/local/nginx/sbin #實際操作時更換為安裝時配置的路徑 ./nginx -s reload
解析配置
Nginx服務配置完畢后,需要將跳轉前的域名解析指向到Nginx所在服務器IP上。即需要在域名的DNS服務商處添加一條
url.dns-example.com
(配置時更換為實際跳轉前域名)的A記錄指向到47.94.XX.XX
配置時更換為實際Nginx所在服務器)。
以云解析為例,詳細步驟參考添加解析記錄,大致步驟如下:
登錄云解析DNS產品控制臺。
選擇 權威域名解析>權威域名,單擊需要配置解析的域名進入 解析設置 頁面。
單擊 添加記錄 ,進行如下解析配置。
驗證效果
#在服務器上運行,域名請填寫您實際業務域名。 curl -v http://url.dns-example.com/a.txt
場景二:將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 改為跳轉后域名
}
}