HTTP 与 HTTPS 解析

网站的https解析

给域名申请了一个ssl证书,记录下http解析转https的过程 下面是解析之前的nginx配置

        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name www.cassi.top cassi.top;
        index index.html index.htm index.php;
        root  /home/wwwroot/;

把需要的https解析添加进去

	listen 80 default_server;
	listen 443 ;
	ssl on;
	ssl_certificate /home/ssl/cassi.top.crt;		#证书
	ssl_certificate_key /home/ssl/cassi.top.key;		#key
	#listen [::]:80 default_server ipv6only=on;
	server_name www.cassi.top cassi.top;
	index index.html index.htm index.php;
	root  /home/wwwroot/;

这样解析过以后 https 是可以正常访问的,但是默认访问http站点的时候 nginx报400错误 nginx 报错 百度google以后说这种错误是由于第一行的listen 80ssl on造成的。80端口不支持 ssl。所以需要修改为 只有443端口才使用ssl。把ssl on注释,然后添加到 443端口中去

listen 80 default_server;
listen 443 ssl;
#ssl on;
ssl_certificate /home/ssl/cassi.top.crt;
ssl_certificate_key /home/ssl/cassi.top.key;

到目前为止 http 与 https都可以正常访问,但是浏览器输入域名时使用的http协议会自动使用80端口,所以不会访问到https域名。需要在nginx中转发到443端口的https。新添一个server配置 写入重定向

server
    {
		listen 80;
		server_name www.cassi.top cassi.top;
		return 301 https://$server_name$request_uri;
    }

当然需要把之前配置中的listen 80 删除或注释。此时ssl on也可以单独拿出来

server
{
	listen 80;
	server_name www.cassi.top cassi.top;
	return 301 https://$server_name$request_uri;
}

server{
	#listen 80 default_server;
	listen 443;
	ssl on;
	...
	...
	...
	...
}

完成后浏览器输入域名会默认转到https链接