Nginx http重定向(强制跳转)https

方法挺多的这里写几个常用的

  • 重定向跳转(推荐)

 server {
        listen       80 default_server;
        listen       [::]:80 default_server;

        #这一段是强制http跳转https需要添加的
        return 301 https://$server_name$request_uri;

        server_name  www.ruoduan.cn;
        root /data/www/hexo;
}
  • 将所有 http 请求通过 rewrite 重定向到 https

server {  
   listen  80;
   server_name  www.ruoduan.cn;
     
   rewrite ^(.*)$  https://$host$1 permanent; 
   # return 302 https://$host$request_uri;
} 
  • index.html 刷新网页(骚操作)

上面两种方法均会耗费服务器资源, 我们使用 curl 来看下百度是如何实现的 baidu.com 向 www.baidu.com 的跳转

$ curl baidu.com -vv 
* Rebuilt URL to: baidu.com/
*   Trying 220.181.57.217...
* TCP_NODELAY set
* Connected to baidu.com (220.181.57.217) port 80 (#0)
> GET / HTTP/1.1
> Host: baidu.com
> User-Agent: curl/7.51.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sat, 01 Apr 2017 06:32:35 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
< Content-Length: 81
< Cache-Control: max-age=86400
< Expires: Sun, 02 Apr 2017 06:32:35 GMT
< Connection: Keep-Alive
< Content-Type: text/html
< 
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host baidu.com left intact

可以看到百度很巧妙的利用meta的刷新作用,将baidu.com跳转到www.baidu.com
同理, 我们也可以用这个特性来实现http向https的跳转

# index.html
<html>  
    <meta http-equiv="refresh" content="0;url=https://docs.lvrui.io/">
html>
server {
    listen 80;
    server_name docs.lvrui.io;
    
    location / {
        # 将 index.html 文件放到下面的目录下
        root /var/www/html/refresh/;
    }
}

server {
    listen 443 ssl;
    server_name docs.lvrui.io;
    index index.html index.htm;
    access_log  /var/log/nginx/docs.log  main;
    ssl on;
    ssl_certificate /etc/ssl/docs.20150509.cn.crt;
    ssl_certificate_key  /etc/ssl/docs.20150509.cn.key;
    error_page 404 /404.html;
    location / {
        root /var/www/html/docs;
    }
}

重启Nginx 注意报错的未成功的话 要杀死进程 重启

result

Nginx http重定向(强制跳转)https_第1张图片
打开 网站 我们可以注意到 301重定向

你可能感兴趣的:(Node.js)