Wordpress开启https访问

首先去云服务器申请证书

这里购买免费的ssl证书,申请完成之后,直接在服务平台下载即可,放在如下的目录,这里参考阿里云的推荐配置,在nginx安装目录下的conf目录创建cert文件夹,将解压的证书放在cert文件夹下,因为我的nginx不仅仅配置了一个应用,都配置在conf的 vhost目录下

一定要注意位置,不然启动nginx会出现文件没有找到的错误

对wordpress文章内的图片及后台强制https设置。

wordpress上传的图片都写入了绝对地址,也就是启用https前所有上传到文章的图片都是以http://开头的地址存储,如果不转换成https访问网站时浏览器顶部的“小锁”会在某些浏览器显示安全警告,让图片变成https地址很简单,只需要在当前主题的functions.php文件中添加以下代码:

/* 替换图片链接为 https */
function my_content_manipulator($content){
    if( is_ssl() ){
        $content = str_replace('http://www.imisty.cn/wp-content/uploads', 'https://www.imisty.cn/wp-content/uploads', $content);
    }
    return $content;
}
add_filter('the_content', 'my_content_manipulator');

可自动将全站所有http地址图片自动转换成https地址图片。

开启登录和后台https访问。

  • 打开网站根目录下的wp-config.php文件,在文件底部添加:
/* 强制后台和登录使用 SSL */
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
  • 然后在后台管理界面设置-常规-wordpress地址和站点地址修改为https
  • 要确保网站的每个元素(如插件、JS、CSS文件、图片、内容分发网站等)都采用https协议:(可以在chromeF12看看有没有警报)
  • 修改“菜单”当中的所有“自定义链接”为 https;
  • 修改其他自己手贱写入的绝对链接的地址……
  • 替换文章所有的Http到https

直接修改数据库(注意先备份!注意先备份!!注意先备份!!!重要的事情说三遍!)

UPDATE wp_posts
SET    post_content = ( Replace (post_content, 'http://www.imisty.cn/', 'https://www.imisty.cn/') );

但是实际操作的过程中我发现不需要使用这一步,毕竟有点危险,所以我将后台站点https设置完成之后,发现文章访问404,再修改为朴素链接之后直接顺带修改了数据库还是使用WordPress自带的修改的对我这样不懂PHP的小白还是很不错的

开始配置站点的配置文件 ,我的配置如下

网站这时候虽然支持了 HTTPS 访问,但是也可以使用 HTTP 来访问,考虑到搜索引擎目前收录的都是 HTTP 链接,需要将http重定向到https。

server {
        listen          80;
        server_name     www.imisty.cn imisty.cn;
        return 301 https://www.imisty.cn$request_uri;
        root            /var/www/html/wordpress;
        index           index.html index.htm index.php;
        client_max_body_size 100M;

        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php$1 last;
        }

        location ~ .*\.php(\/.*)*$ {
            include fastcgi.conf;
            fastcgi_index  index.php;
            fastcgi_pass  127.0.0.1:9000;

            fastcgi_connect_timeout 300;

            fastcgi_send_timeout 300;

            fastcgi_read_timeout 300;
        }

        error_log  logs/error_wordpress.log;
        access_log logs/misty.log combined;
    }
server {
 listen 443 ssl;
 server_name www.imisty.cn imisty.cn;
 root            /var/www/html/wordpress;
 index           index.html index.htm index.php;
 client_max_body_size 100M;

 ssl_certificate   cert/misty.pem;
 ssl_certificate_key  cert/misty.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 ~ .*\.php(\/.*)*$ {
      include fastcgi.conf;
      fastcgi_index  index.php;
      fastcgi_pass  127.0.0.1:9000;

      fastcgi_connect_timeout 300;

      fastcgi_send_timeout 300;

      fastcgi_read_timeout 300;
     }

}

检验配置是否正确
/usr/local/nginx/sbin/nginx -t

Nginx安装http_ssl_module模块

Nginx如果未开启SSL模块,配置Https时提示错误

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:xxx

因为在配置的时候已经安装过nginx,但是没有安装ssl模块

采用如下步骤安装nginx的ssl模块

  1. 进入nginx的ssl源码包
    cd ~/MyFille/nginx
  2. configure安装指定的模块
    ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  3. make编译
    make
    4.一定不要执行make install,否则就覆盖安装了。
  4. 备份原有的nginx
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

6.将刚刚编译好的nginx替换原来的,一定要先stop,不然会显示文件忙
cp ./objs/nginx /usr/local/nginx/sbin/

7.查看安装情况,如下信息说明正常安装

[[email protected] sbin]# ./nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

常见问题

启动nginx的时候出现如下错误

解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid" failed(2:No such file or directory)

解决办法/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf使用nginx -c的参数指定nginx.conf文件的位置,注意这里的配置文件位置最好使用绝对路径

阿里云推荐nginx配置的警告信息

[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
nginx 1.15 及以后的版本,不需要再写 ssl on; 了。

改为
应该把 ssl on 改成 listen 443 ssl 这样才对

主页和后台管理https访问正常,其他页面访问出现404错误

这个查阅资料发现时伪静态的问题,最后还是使用朴素链接解决这个问题,原因我也不想深究了

WP Editor.md 在修改为https访问之后卡加载界面

这个问题我在前端调试发现发现是js加载的时候使用了https需要将地址改为https的,最后我还是选择逃避式解决问题改用WP Githuber MD,另一个原因就是WP Editor.md作者不再维护了

小确幸

每一丝灵感都值得被记录,每一笔记录都是成长,每一点成长都值得欢呼

博主个人站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客园 :https://imist.cnblogs.com/

希望能够认识一些热爱技术的小伙伴,欢迎友链接哟

原文地址:https://www.cnblogs.com/imist/p/11417539.html

时间: 2024-08-09 20:49:35

Wordpress开启https访问的相关文章

WordPress整站轻松开启HTTPS

近两年来HTTPS取代HTTP已经成为大势所趋.早在2014年google Chromium安全团队提议将所有的HTTP协议网站标注为不安全.现在,Chrome浏览器已经开始执行这一标准了.从 Chrome 56 开始,任何网页,如果有输入密码或者信用卡资料的,却没有使用 HTTPS,将被 Chrome 浏览器标识为不安全:逐步的,任何没有使用 HTTPS 协议的网页chrome浏览器都会被标识为”不安全”,或者 “Not Secure”. 从chrome 56 版本开始,查看网站的SSL证书的

CentOS7安装lamp并实现Xcache、https访问

            LAMP指的是Linux(操作系统).ApacheHTTP 服务器,MySQL数据库(有时也指MariaDB) 和Php(有时也是指perl或python) ,他们共同组成了一个强大的Web应用程序平台. https全称为Hyper Text Transfer Protocol over Secure Socket Layer:基于http支持ssl协议,主要作用是用于安全的传输数据:http是超文本的传输协议,信息是明文的,安全性很低:而https则是具有安全性的ssl

Ubuntu + Nginx 配置全站https访问

最近跟室友要一起搞一个个人公众号,提前想把生态想清楚了,所以准备部署一个网站 正好公司有Microsoft Visual Studio Professional订阅,每个月有50刀免费额度,对于Azure来说50刀也不算什么,不过支撑一个个人网站还是可以的,毕竟当前还没有多少用户,等用户数量庞大以后也就不愁server的问题了hiahia 好了跑偏了. 网站暂定先用WordPress,自己开发能力不强,加上现在WordPress的SEO好像不是很差,综合考虑就是这样. 谁知一看WP文档发现现在要

Apache配置SSL 实现https访问

本次坏境:CA和apache为同一台主机 先使本机作为CA服务端: [[email protected]~]#yum -y install openssl openssl-devel [[email protected]~]#vi /etc/pki/tls/openssl.cnf [ CA_default ] dir = ../../CA 改为: [ CA_default ] dir= /etc/pki/CA 为了减少不必要的重复操作,可以预先定义[ req_distinguished_name

centos7安装tengine强制使用HTTPS访问

操作系统:centos7.2 x64tengine:Tengine/2.2.0主机IP: 10.0.0.12 一.安装tengine 1.1 下载源码安装包 1.1.1 源码包pcre-8.40            用于支持正则表达式 [[email protected] ~]# cd /usr/local/src/ [[email protected] src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-

Ubuntu下配置apache开启https

一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那https到底是怎么开启的,随着疑问自己也了解https配置原理并在Ubuntu服务器上开启了https. 二.配置证书 配置https一个很重要的步骤就是配置证书. 1.创建证书 sudo apt-get install ssl-cert make-ssl-cert生成证书的方法有两种,一种是根据生成

Nginx负载均衡实现https访问

整体流程:1.搭建tomcat项目集群(默认完成) 2.安装nginx需要的库 3.安装Nginx并修改配置文件 4.启动测试 1.1.1. 安装Nginx 1.1.1.1. 安装环境: 安装pcre库 yum -y install pcre-devel 安装zlib库 yum install -y zlib-devel 安装openssl库 yum install -y openssl openssl-devel   或者  编译安装 编译安装openssl: 1.上传openssl压缩包 按

nginx使用ssl模块配置支持HTTPS访问

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求: 做一个网站域名为 www.localhost.cn 要求通过https://www.localhost.cn进行访问. 10.10.100.8 www.localhost.cn 实验步骤: 1.首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel 2.创建服务

Tomcat开启https

为了防止包监听,Https属于必须品,现在Web服务器基本上都有直接支持https的功能,这里记录一下在tomcat里面怎么开启https. 1. 生成Keystore (使用tomcat作为别名,RSA算法) Windows: %Tomcat_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA Unix: $Tomcat_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA 按照提示输入密码,公