Nginx地址重定向使用

Nginx地址重定向使用

在使用Nginx作为服务器时,经常遇到的需求就是对地址进行重定向(301重定向),而重定向可以解决很多服务器应用需求,而且Nginx实现这一切都比较简单。那么,我们常见的重定向有哪些?这里我就罗列几个常见的需求:http重定向到https、www自动补全、redirect对https的支持。当然,也有很多人在使用rewrite重写地址实现重定向,但在这里并不推荐,因为它在不同的Nginx版本是有缺别的,而301是推荐使用的,因为它是http/https通信协议的标准,与服务器本身无直接关系。

 

l   http到https

l   www自动补全

l   跳转对https支持

 

 

 

一、http到https

Https在Nginx的配置,读者可以查看文章《Nginx的CA证书使用总结》,这里有它详细的实现过程。其中,如何实现http到https的切换,就用到了Nginx的301重定向实现,具体如下样子(放在nginx.conf的Server区域):

if ($scheme = http) {

    return 301https://$server_name$request_uri;

}

 

 

二、www自动补全

www自动补全,指的是不需要输入www,仅输入一级域名即可自动在前面添加www,比如:xxx.com为一级域名,www.xxx.com为二级域名,那么输入xxx.com就可以自动切换为www.xxx.com访问。上面的情况是同一个域名的自动定位,其实我们可以直接在域名管理平台,如:阿里云上直接添加一个xxx.com记录值,将主机值设为@即可(推荐),并不是必须通过配置Nginx实现。

另外一种情况,就是在www.xxx.com中重定向到yyy.com一级域名,并实现自动定位到www.yyy.com二级域名,那么同样可以先在域名管理平台添加yyy.com一级域名,遇上面类似操作。然后,在Nginx添加如下配置即可:

 

server_name  yyy.com

if ($host =’yyy.com’) {

    return 301 http://www.yyy.com$request_uri;

}

 

如果想同时跳转到https,仅需要如下配置:

server_name  yyy.com

if ($host =’yyy.com’) {

    return 301 https://www.yyy.com$request_uri;

}

 

 

三、跳转对https支持

很多时候,我们所部署的应用程序,通过其本身提供的redirect实现跳转功能时,如果跳转前为https方式请求,跳转后,则协议默认改为http了,结果引发了很多需要https才能访问的操作都不能进行。那么,此时我们就需要配置nginx.conf,使其在跳转时,支持自动从http跳转到https,其实配置较简单,具体如下:

location /xxx {

   proxy_set_header Host$host;

   proxy_set_headerX-Forwarded-For $remote_addr;

   proxy_pass  https://www.yyy.com:port;

   index index.htmlindex.htm index.php;

   proxy_redirect http://$scheme://;

}

 

正如上面所示,该配置情况是使用nginx作为代理服务器,通过proxy_pass中转到tomcat服务器(这是较常见的使用)。那么,通过proxy_redirect配置,就可以完美实现应用程序使用redirect跳转时,做到保留对https的切换,因为大部分应用程序的redirect仅支持默认的http协议方式。

 

 

 

实际上,Nginx的301重定向可以解决很多需求,需要读者灵活使用即可。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云水之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值