Nginx配置https,加重定向强制跳转

1、https简介

HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据

2、https协议原理

首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来

 

3、 nginx安装与 证书生成

注:安装的时候需要注意加上 --with-http_ssl_module

 

4、http访问强制跳转到https的方法

网站添加了https证书后,当http方式访问网站时就会报404错误,所以需要做http到https的强制跳转设置

下面是将所有的http请求通过rewrite重写到https上。

例如将所有的www.github.com域名的http访问强制跳转到https

第一种:

rewrite ^(.*)$  https://$host$1 permanent;        //这是ngixn早前的写法,现在还可以使用
也可用
rewrite ^/(.*)$ http://www.github.com/$1 permanent;
或者
rewrite ^ http://www.github.com$request_uri? permanent;

第二种:

return   301 https://$server_name$request_uri;      //这是nginx最新支持的写法

第三种:这种方式适用于多域名的时候,即访问github.com的http也会强制跳转到 https://dev.github.com上面

if ($host ~* "^github.com$") {
    rewrite ^/(.*)$ https://dev.github.com/ permanent;
    }

第四种:这是最简单的一种配置

if ($host = "dev.github.com") {
       rewrite ^/(.*)$ https://dev.github.com permanent;
    }

参考:文章

 

你可能感兴趣的