http更换https指北

157 阅读2分钟

目标是:通过https 协议访问服务 (实现浏览器输入公网ip自动重定向到https+域名)

实现途径:

nginx 配置实现80端口(http)重定向443(http+ssl=https)端口

工具

已备案的域名+ssl证书+nginx

步骤

1、购买域名

我在腾讯云上购买了大陆的域名,大陆的域名需要备案,香港的貌似不需要备案

image.png

2、域名备案

个人域名大概需要一周左右时间

3、DNS域名解析

腾讯云上步骤很详细,实操性强!

4、申请CA证书

腾讯云有一年的免费SSL证书可以申请,证书下发几分钟的时间

5、安装证书(上传CA证书到服务器,这里我放到nginx/cert目录下)

6、配置443端口,达到正确访问https

server {
       #监听443端口
       listen               443;
       #你的域名
       server_name          example.com;
       ssl                  on;
       #index index.html index.htm;
       ssl_certificate      /usr/local/nginx/cert/example.com.pem;
       ssl_certificate_key  /usr/local/nginx/cert/example.com.key;
       ssl_session_timeout  5m;
       ssl_ciphers          ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers on;
       location / {
           root html;
           index index.html index.htm;
           # proxy_pass http://公网ip:80; #这里不需要代理,如果配置会造成多次重定向的错误情况
       }
    }

7、80端口重定向配置,实现浏览器输入http链接自动重定向到https(nginx配置80端口转发443)

server {
        listen       80;
        #server_name  example.com;
        server_name  www.example.com; #这里是否加www,推测跟解析记录有关(我是申请的免费ssl)
        rewrite      ^ https://$server_name$request_uri permanent; # permanent 301重定向
}

8、停止nginx服务并重新启动,浏览器输入公网ip,自动跳转到www.domain/

301永久重定向

image.png

301 Moved Permanently 被请求的资源已永久移动到新位置。

302 Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

  • 301适合永久重定向

  301比较常用的场景是使用域名跳转。

  比如,我们访问 www.baidu.com 会跳转到 www.baidu.com,发送请求之后,就会返回301状态码,然后返回一个location,提示新的地址,浏览器就会拿着这个新的地址去访问。

  注意: 301请求是可以缓存的, 即通过看status code,可以发现后面写着from cache。

  • 302用来做临时跳转

  比如未登陆的用户访问用户中心重定向到登录页面。

  访问404页面会重新定向到首页。

image.png


🎈🎈🎈

🌹 持续更文,关注我,你会发现一个踏实努力的宝藏前端😊,让我们一起学习,共同成长吧。

🎉 喜欢的小伙伴记得点赞关注收藏哟,回看不迷路 😉

✨ 欢迎大家评论交流