文章开始前,先介绍本人的服务器环境吧,我是在阿里云万网购买的低配服务器,放的是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端口哦~
没有难的技术,当你弄清它的原理时,你会发现原来如此简单~ 欢迎加群【536501561】讨论