网站开启SSL

  发布于 2019-08-30  996 次阅读


前言

浏览器上那个绿色的小锁,想要。

1. 购买SSL证书

Let's Encrypt、阿里云、腾讯云、又拍云等,都有提供免费证书的申请接口。目前在使用阿里云免费的赛门铁克的证书。

2. 设置服务器

1. 配置nginx

将证书文件xxxx.pem xxxx.key上传到服务器

修改nginx配置文件添加下面部分

server {
    listen 80;
    listen [::]:80;
    server_name             xx域名xx;
    #http自动跳转https
    return  301 https://$server_name$request_uri;  
}
server {
	#顺道打开http2,对于速度有 提升
	listen 443 ssl http2 default_server;
	listen [::]:443 ssl http2 default_server;
	root                    /xxxx/wordpress; #wordpress位置
	server_name             xx域名xx;
	index index.php index.html index.htm;
	
	ssl_certificate         /xxxx.pem; #证书位置
	ssl_certificate_key     /xxxx.key; #私钥位置
	ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
	ssl_session_cache       shared:SSL:1m;
	ssl_session_timeout     5m;
	ssl_prefer_server_ciphers on;
}

nginx重载

nginx -s reload

 

2. 修改wp-config.php(不为必须)

添加代码

$_SERVER['HTTPS'] = 'ON'; //设置Wordpress全站开启HTTPS。

在下列代码之前

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

3. 修改地址

进入网站后台 设置->常规

修改WordPress地址(URL)和站点地址(URL)前缀http为https

3. 配置中出现的问题

1. wp后台样式不加载

Nginx 的 fastcgi_buffers有限,导致无法正常加载 wp 后台所需的文件。

<link rel='stylesheet' href='http://free-e.xv/wp-admin/load-styles.php?c=0&amp;dir=ltr&amp;load%5B%5D=dashicons,admin-bar,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,widgets,site-icon,&amp;load%5B%5D=l10n,buttons,wp-auth-check,media-views&amp;ver=4.8' type='text/css' media='all' />

nginx.conf的http{}加入:

fastcgi_buffers 8 64k;

2. nginx 出现413 Request Entity Too Large

nginx配置中设置的可上传的最大文件限制过小。

nginx.conf的http{}段中加入

client_max_body_size 20m;  #20m为最大上传文件大小

同时也修改php.iniupload_max_filesizepost_max_size数值为20m