解决方案实践 > 通过Nginx实现URL转发
通过Nginx实现URL转发
  • 概览
  • 需求场景
  • 需求场景一:显性URL转发
  • 需求场景二:隐性URL转发
  • 实现概述
  • 配置步骤
  • 显性URL转发
  • 隐性URL转发
  • 相关产品

通过Nginx实现URL转发

更新时间:

概览

通过Nginx的转发功能来自行搭建URL转发服务器,实现域名转发功能。

需求场景

需求场景一:显性URL转发

用的是301重定向技术,效果为浏览器地址栏输入 http://a.com 回车,打开网站内容是目标地址 http://cloud.baidu.com/ 的网站内容,且地址栏显示目标地址 http://cloud.baidu.com/

需求场景二:隐性URL转发

用的是 iframe 框架技术、非重定向技术,效果为浏览器地址栏输入 http://a.com 回车,打开网站内容是目标地址 http://cloud.baidu.com/ 的网站内容,但地址栏显示当前地址 http://a.com

实现概述

目前用户需要手动搭建一个nginx服务器或者集群,将域名在注册商那里设置解析IP为自行搭建的Nginx服务器地址。

Nginx可以通过rewrite或者proxy_pass两种方式将流量牵引到目标业务。

  • 利用rewrite功能可以实现显性转发。该方式配置下用户请求nginx后,nginx返回重定向的url(301永久重定向、302临时重定向)给客户端,客户端在用重定向后的url再次请求对端server。如果使用了永久重定向用户浏览器中就会缓存该地址,用户再次访问过程就不会再次请求nginx,而是直接命中最终的server
  • 通过proxy_pass可以实现隐性转发。该方式nginx服务器作为一个代理服务器,接收用户流量转发到真正的后端服务。

说明: 一般情况不建议使用隐形转发,流量过Nginx服务器对运维和负载均衡都存在挑战。

配置步骤

显性URL转发

1.Nginx安装

使用root权限安装

#下载安装包
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

2.配置Nginx

配置.png

301永久重定向

server {
    listen       80;
    server_name  $your_domain;
    rewrite /.*  http://$new_domain$uri permanent;
}

这里 $uri 是指匹配正则后跳转的目标地址,比如访问 $your_domain/about 就会跳转到 http://$new_domain/about。

302临时重定向

server {
    listen       80;
    server_name  $your_domain;
    rewrite /.*  http://$new_domain$uri redirect;
}

3.重启Nginx

cd /usr/local/nginx/ #更换为安装时配置路径
./sbin/nginx -s reload

4.验证

验证.png

隐性URL转发

1.Nginx安装

使用root权限安装

#下载安装包
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

2.配置Nginx

我们将访问service.baidu.com:9988的流量代理到redirect.baidu.com:6666上去.

配置2.png

3.验证流量

验证2.png

相关产品

智能云解析