LNMP Nginx http跳转到https, 不带www跳转到www域名

nginx http到https www跳转

现在SSL站点是大势所趋, Google更青睐https网站. 另外基于网址唯一性, 减少网站重复内容等需求, 最好将网站做下301跳转, http跳转到https, 以及不带www和带www之间的跳转.

以下是具体步骤. 基于LNMP、Nginx环境。

1. 编辑网站配置文件 (域名按你自己的改)

修改前记得备份, 万一出错的话可以还原.

vim /usr/local/nginx/conf/vhost/www.wmsoho.com.conf

1.1 首先将所有http请求(80端口) 跳转到https(443端口)

只要是http开头的, 不管带还是不带www, 通通跳转到https://www.wmsoho.com

添加以下代码 (域名改成自己的)
return 301 https://www.wmsoho.com$request_uri;

具体看截图:
server配置

补充: 关于不带www跳转到www, 不考虑https的情况:
网上很多文章的代码是这样:
将两个域名写在同一个server中,
然后通过if语句判断域名进行rewrite跳转:

Nginx官方并不推荐使用if语句 (原文可查看此处).
因为每次访问都要判断一遍, 低效且复杂。
其推荐的做法是将带www和不带www分开写成2个server, 再根据需要进行跳转.
另外使用return语句正则匹配性能更优秀.

1.2 然后是https请求 (443端口)中, 不带www跳转到带www的域名

比如https://wmsoho.com 跳转到 https://www.wmsoho.com
这里建议写成两个server:
一个是www的, 不用做跳转, 只要删掉server_name中不带www的域名就好了.
另一个是不带www的, 需要跳转到带www.

1.2.1 https & 带www 配置

找到443端口的代码段, 删掉wmsoho.com, 注意分号别删了.

1.2.2 https & 不带www 配置

在文件末尾新建一个server (你可以直接复制上面443端口的server代码再修改), 注意不要出错. 完整代码如下:

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name wmsoho.com;
        return 301 https://www.wmsoho.com$request_uri;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/www.wmsoho.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.wmsoho.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
    }

改完之后保存.

重启Nginx
输入命令lnmp restart或者lnmp nginx restart
如果配置文件有问题, nginx会有错误提示.

最后通过浏览器访问, 测试一下是否跳转成功.

未经允许不得转载:外贸SOHO笔记 » LNMP Nginx http跳转到https, 不带www跳转到www域名

赞 (4) 打赏

评论 5

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. Crazy哇,感谢大佬!Reply
  2. Zvonimir哇,学到了,这样真的很有用,也好理解Reply
  3. 龙笑天马克一下先 估计马上就要用了~Reply
  4. 老何找遍了整个互联网,还是这个方法有效。 隆重感谢!Reply
    • 怒马不客气, 解决问题就好~Reply

觉得文章有用就打赏一下作者~

支付宝扫一扫打赏

微信扫一扫打赏