配置https证书,由http变成https访问

    文章开始前,先介绍本人的服务器环境吧,我是在阿里云万网购买的低配服务器,放的是ThinkPhp框架的代码,配置参数:


Linux版本:Centos 7.2

Nginx:nginx version: nginx/1.14.0

PHP:PHP 7.2.5 (cli) (built: May  5 2018 17:43:33) ( NTS )
          Copyright (c) 1997-2018 The PHP Group
          Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

MySQL:mysql  Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using  EditLine wrapper


配置介绍完了,下面就聊一下怎么配置https了。

    首先,你需要一份https证书,我是在万网弄的免费证书,打开管理控制台的 安全云盾->CA证书服务(数据安全) 菜单栏,点击 购买证书,选择 免费型DV SSL ,就会发现配置费用为:0.00 ,点击立即购买,后面的购买流程和补全信息我就不废话了。

    购买完之后,在列表页点击下载,根据你自己的环境下载对应的证书,里面有证书介绍和安装说明,直接按照教程copy粘贴就行,不用改什么,但是呢,你会发现,访问你的域名之后,发现还是http,而不是https,需要手动改成https,这就很尴尬了,,ԾㅂԾ,,

    因为证书是监听443端口的,我们的域名一般都是访问的80端口,那应该怎么办呢?这时我们需要强制把它转成https,这个时候,就需要做301永久跳转了,最好不要用rewrite,会影响权重(之前的做法:把80端口和443端口放在同一个server里面,用rewrite跳转),下面就是我的default.conf配置【注:重点是带有ssl的部分】:

# 禁止IP访问
server {
	listen		80 default;
	server_name	_;
	return		500;
}
# 301跳转至https
server {
	listen       80;
	server_name  pengxb.com www.pengxb.com;
	return	301 https://pengxb.com$request_uri;
}
# https
server {
	listen		 443 ssl;  
	server_name  pengxb.com;
	root	 	 /home/www/pengxb;
	index  	 	 index.php index.html index.htm;

	charset utf-8;
	access_log  /home/logs/pengxb.log  main;

	client_max_body_size    100m;

	#CSP设置upgrade-insecure-requests
	#我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),
	#页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。
	#这句话可以解决在Google浏览器上,地址栏https链接是灰色的问题
	add_header Content-Security-Policy upgrade-insecure-requests;

	ssl_certificate   cert/214264154970478.pem;
	ssl_certificate_key  cert/214264154970478.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 / {
		try_files $uri @rewrite;
	}

	location @rewrite {
		set $static 0;
		if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
			set $static 1;
		}

		if ($static = 0) {
			rewrite ^/(.*)$ /index.php?s=/$1;
		}
	}

	location ~ /Uploads/.*\.php$ {
		deny all;
	}

	location ~ [^/]\.php(/|$) {
		# fastcgi_pass 127.0.0.1:9000;
		fastcgi_pass  unix:/tmp/php-cgi.sock;
		fastcgi_param SCRIPT_NAME     $1;
		fastcgi_param PATH_INFO       $2;
		fastcgi_param SCRIPT_FILENAME $document_root$1;

		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

	location ~ /\.ht {
		deny  all;
	}
}

配置完成之后,再次访问http格式,就会自动变成https了,各位可以试试哦,有问题的话,麻烦在下方评论区联系我。

哦对了,记得要对外开启服务器的443端口哦~

技苑
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • © 2016-2024 技苑 | PHP是最好的语言 版权所有 ICP证:鄂ICP备15021999号-4
  • 联系邮箱:master@pengxb.com