Nginx在域名301的情况下SSL

in 网站程序人生 with 0 comment

  前几天突然发现一件事,就是访问Google和Baidu的根域名都会跳转到www的域名下,没有搜到为什么要这样做,但还是效仿着搞一搞吧。

  对我个人来说,301跳转之后存在一个历史问题,就是以前我在很多地方留的链接地址都是https://lucien.ink,这样的话在我开了301跳转之后,通过80端口验证的时候申请/续期不了Let's Encrypt的证书,通过443端口验证的话又要暂停一下Nginx以解决端口占用的问题,很麻烦。而不开443的时候https又访问不了,开了443却不搞ssl就会被浏览器拦截,很无语。

  所以说要么我每次手动搞一搞,要么想一个办法让网站可以在301的情况下搞一搞Let's Encrypt

  百度谷歌无果,自己尝试着写了一下,大体思路就是如果当前请求的链接里含有.well-known的话就不301跳转,比想象中要简单得多。

server
{
    listen 80;
    listen 443 ssl http2;
    server_name www.lucien.ink;
    index 主页;
    root 网站路径;
}

server
{
    listen 80;
    listen 443 ssl http2;
    server_name lucien.ink;
    root 网站路径;
    if ($request_uri !~* [^\s]*/.well-known/[^\s]*)
    {
        rewrite ^(/.*)$ https://www.lucien.ink$1 permanent;
    }
}
Responses