试图启动并运行https的复杂Wordpress方案

时间:2016-12-26 18:33:44

标签: wordpress http-status-code-403 mixed-content

老实说,我不知道一个更具有试探性和暗示性的标题,所以......对所有主持人提前抱歉。

好的,所以我配置正确让我们用Nginx加密到我的网站。完成后,我会在典型的blocked:mixed:content (BMC)问题中看到没有CSS,JS等的网站。 BMC很容易修复,你检查wordpress URL配置加上一两件东西。

所以这里的事情开始变得复杂。只有在我成功登录wp-admin后,Wordpress才会显示Sorry, you are not allowed to access this page.,后面显示403错误。那时,error.log不会显示任何内容,但access.log会显示:

160.160.160.160 - - [26/Dec/2016:11:43:59 -0600] "GET /wp-admin/ HTTP/2.0" 403 1826 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
160.160.160.160 - - [26/Dec/2016:11:43:59 -0600] "GET /favicon.ico HTTP/2.0" 200 159 "https://www.paradisearenasblancas.com/wp-admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

(假IPs BTW)

到目前为止,一切都只是一个信息,我无法看到有关错误的唯一有用信息。

我已使用旧http网址配置了我的Wordpress安装,因此在无法进入信息中心后,我可以直接使用MySQL编辑这些网址,或者在wp-config中手动添加。问题是它在浏览器中给出了net::ERR_TOO_MANY_REDIRECTS错误。所以这是一个瓶颈情况,我不知道该怎么做。

我在website.conf文件中找不到错误:

server {
    listen 80;
    listen [::]:80;
    server_name www.mywebsite.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    include snippets/ssl-www.mywebsite.com.conf;
    include snippets/ssl-params.conf;

    server_name  www.mywebsite.com;

    root   /usr/share/nginx/html/mywebsite.com/;
    index index.php index.html;

    error_log  /var/log/nginx/error-paradise.log;
    access_log /var/log/nginx/access-paradise.log;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /usr/share/nginx/html;
        }

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;

            # Wide-open CORS config for nginx
        add_header 'Access-Control-Allow-Origin' 'https://www.mywebsite.com';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        }

    location ~ /.well-known {
                allow all;
        }
}

我做的另一件事是从plugins目录移动所有插件,什么都没有,一切都还是一样。

我不知道还能做什么。任何帮助将不胜感激。

编辑: 这似乎是我正在使用的主题。我试图移动它的目录,当Wordpress更改为下一个默认主题时,一切正常。如果我再次将主题目录复制到themes/,则会出现同样的问题。由于我有很多blocked:mixed:content错误,因此我使用grep -rnw '/usr/share/nginx/html/website.com/wp-content/themes/themename/' -e 'http'在主题目录中搜索,并发现包含http的大量行。我知道有很多插件可以解决这个问题,但是因为我在登录wp-admin后遇到错误403,如何将所有http替换为https

1 个答案:

答案 0 :(得分:0)

要为wordpress启用SSL,您可以执行以下两项中的任何一项

  1. 设置 - >中修改您的SITE和HOME网址设置。 wordpress仪表板的常规部分,将 http 更改为 https。

  2. 编辑您的wp-config.php并定义 WP_SITEURL WP_HOME

    define( 'WP_SITEURL', 'https://example.com' ); define( 'WP_HOME', 'https://example.com' );

  3. 您还应该将此添加到wp-config.php强制ssl for wp-admin

    define('FORCE_SSL_ADMIN', true);