美文网首页
nginx如何安装HTTPS服务(以及适配wordpress+七

nginx如何安装HTTPS服务(以及适配wordpress+七

作者: PM回忆录 | 来源:发表于2019-07-23 02:56 被阅读0次

    证书文件:

    .pem:证书文件。PEM文件的扩展名为CRT格式。

    .key:证书的密钥文件。

    1.证书申请和下载

    笔者是在阿里云注册的域名,因此也在阿里云进行了SSL证书的申请。具体申请方法,可以参考阿里云-SSL证书控制台。进去之后,选择个人免费证书,然后点击购买(0元)。

    之后点击申请(填写域名和个人信息)-验证-部署。接着,很快就可以获取到可用的证书,然后点击下载,选择nginx服务器。这时候可以下载到一个压缩包,打开后有.pem和.key文件。将文件传到服务器。

    2.在Nginx安装目录下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。

    3.打开Nginx安装目录 > conf文件夹 > nginx.conf文件,在nginx.conf文件中找到以下属性:

    # HTTPS serverserver{listen443;server_namelocalhost;sslon;ssl_certificatecert.pem;ssl_certificate_keycert.key;ssl_session_timeout5m;ssl_protocolsTLSv1 TLSv1.1TLSv1.2;ssl_ciphersALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_cipherson;location/ {

    更改为:

    # 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。

    server {

    listen 443;

    server_name pmhuiyilu.cn www.pmhuiyilu.cn;  # localhost修改为您证书绑定的域名。

    ssl on;  #设置为on启用SSL功能。

    index index.php index.html index.htm;

    ssl_certificate /etc/nginx/cert/pmhuiyilu.cn.pem;  #将domain name.pem替换成您证书的文件名

    ssl_certificate_key /etc/nginx/cert/pmhuiyilu.cn.key;  #将domain name.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 / {

    root /web/web-aliyun;  #站点目录。

    index index.php index.html index.htm; 

    }

    location ~ \.php$ {           

    root /web/web-aliyun;

    fastcgi_pass  127.0.0.1:9000;           

    fastcgi_index  index.html;           

    fastcgi_param    SCRIPT_FILENAME    /web/web-aliyun$fastcgi_script_name;   

    include        fastcgi_params;           

    }

    }

    4.设置http请求自动跳转https,将原server{}转换为以下语句:

    server {

    listen 80 default_server;

    server_name pmhuyilu.cn www.pmhuiyilu.cn;

    rewrite ^(.*)$ https://$host$1 permanent;

    location / {

    index index.php index.html index.htm;

    }

    }

    保存nginx.conf文件后退出。重启nginx。

    5.设置php解析.css等文件,找到php-fpm的配置文件,我的在/etc/php-fpm.d/www.conf中。找到并编辑:

    security.limit_extensions = .php .php3 .php4 .php5 .html

    重启php-fpm服务

    6.设置iptables,开放443端口。

    7.这时候打开网站,可以看到网站是没有样式的,因为wordpress还没有设置ssl。

    打开网站根目录文件\wp-includes\functions.php,找到代码 require( ABSPATH . WPINC . '/option.php' );大概在第8行。

    在下方添加以下代码:

    add_filter('script_loader_src','agnostic_script_loader_src',20,2);function agnostic_script_loader_src($src, $handle){return preg_replace('/^(http|https):/','', $src);}add_filter('style_loader_src','agnostic_style_loader_src',20,2);function agnostic_style_loader_src($src, $handle){return preg_replace('/^(http|https):/','', $src);}

    打开网站根目录\wp-config.php文件找到代码:

    **@packageWordPress*/

    在下方添加:

    $_SERVER['HTTPS']='on';define('FORCE_SSL_LOGIN',true);define('FORCE_SSL_ADMIN',true);

    8.这时https网址小锁上有个黄色小叹号(此内面部分内容不安全、如图像)https证书存在错误,可能网站文章内容页的图片链接地址还是http://开头,也有可能是外部链接没https化。这时需要通过PHPMyadmin面板运行SQL进行批量替换图片地址。

    打开数据库,使用替换语句进行替换,也可以使用phpMyadmin进行操作。

    UPDATE wp_posts set guid=REPLACE(guid,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');

    UPDATE wp_posts set post_content=REPLACE(post_content,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');

    UPDATE wp_options set option_value=REPLACE(option_value,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');

    9.如果你之前配置过七牛云,那么现在你的页面一定还不是绿色的小锁标志,因为页面上有七牛云的非HTTPS的链接。因此我们需要将七牛云里的域名配置成HTTPS:进入七牛云,选择对象存储---域名管理,开启HTTPS,大概需要10分钟的审核时间,开启成功。

    现在,再次刷新你的页面,应该已经显示出完美的小绿锁了。

    ----------------------------------------------

    完。

    欢迎访问作者网站:https://pmhuiyilu.com

    相关文章

      网友评论

          本文标题:nginx如何安装HTTPS服务(以及适配wordpress+七

          本文链接:https://www.haomeiwen.com/subject/solnlctx.html