Skip to content
On this page

nginx配置301到https

今天域名刚通过备案就迫不及待想要解析加配置https,关于nginx配置ssl证书阿里云上有免费的证书申请和使用教程。

在网上查了下,有2种可行的方式:

// 方法1
// nginx 做301永久重定向
server {
  listen 80;
  server_name domain.com
  
  return 301 https://$server_name$request_uri;
  // 或者用rewrite
  // rewrite ^/(.*)$  https://$host$1 permanent; 
  // permanent 代表 301
  // 而redirect 代表302
}

302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。

而301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。

// 方法2
// 利用meta http-equiv="refresh" 做网页内的跳转
server {
  listen 80;
  location / {
    root /home/meta/
    index index.html
  }
}

/home/meta/index.html

<html>  
    <meta http-equiv="refresh" content="0;url=https://iming.work">
</html>

0代表立即跳转,如果是5,就表示5秒后跳转;

这2种方式的区别:

  • 方法1: 我觉得会对搜索引擎友好,永久重定向后,搜索引擎抓到的地址都是真实的,而方法2中,是跳转前的
  • 方法2:由于跳转是在页面中做的,而不是nginx,所以不会占用服务资源

我们可以用curl -v iming.work来查看整个http通信过程

方法1:

5b050c76ee920a00446fd0f8

方法2:

5b050ca57f6fd300636a76c3