WordPress с Nginx и Cloudflare

Я не уверен, что это проблема с изменением доменного имени на сайте WordPress или проблема с настройкой сертификатов SSL между Nginx и Cloudflare. Я подозреваю, что и то и другое.

Я установил два 2 разных сайта WordPress, один с Digital Ocean, другой с Scaleway, оба с использованием соответствующих предварительно созданных образов WordPress Ubuntu.

С Digital Ocean, Apache поставляется предварительно настроенным, а с Scaleway у них есть Nginx.

Когда я указал свой домен на хост на базе Apache, все «просто работало», включая HTTPS.

Когда я указал свой домен на хост на базе Nginx, все мои файлы ресурсов завершились сбоем, потому что запросы отправляются через HTTP, поэтому я возвращаюсь «Политика реферера: no-referrer-when-downgrade». Похоже, PHP не обнаруживает HTTPS.

Нужны ли мне дополнительные шаги по настройке для Nginx для работы с Cloudflare? Почему Cloudflare SSL работает с Apache без дополнительных действий?

Вот моя текущая конфигурация vhost для nginx. В нем есть некоторые незначительные обновления по сравнению с исходным состоянием по умолчанию.

Требуются ли дополнительные действия по настройке Nginx для работы с Cloudflare? Почему Cloudflare SSL работает с Apache без дополнительных действий?

Вот моя текущая конфигурация vhost для nginx. В нем есть некоторые незначительные обновления по сравнению с исходным состоянием по умолчанию.

Требуются ли дополнительные действия по настройке Nginx для работы с Cloudflare? Почему Cloudflare SSL работает с Apache без дополнительных действий?

Вот моя текущая конфигурация vhost для nginx. В нем есть некоторые незначительные обновления по сравнению с исходным состоянием по умолчанию.

server {
  listen 80 default_server;

  listen 443 ssl default_server;
  listen [::]:443 ssl default_server;

  client_max_body_size 200M;

  root /var/www;
  index index.php index.html index.htm;

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

  error_page 404 /404.html;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
          root /usr/share/nginx/html;
  }

  location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
         # proxy_set_header X-Forwarded-Proto $scheme;
  }

  location ~* \.(eot|otf|ttf|woff|woff2)$ {
          add_header Access-Control-Allow-Origin *;
         # add_header Referrer-Policy origin always;
         # proxy_set_header X-Forwarded-Proto $scheme;
  }
}

[ОБНОВЛЕНИЕ]

Добавление этого кода PHP в мой проект обеспечило частичное исправление. По крайней мере, с этим добавлением сайт и все ресурсы загружаются.

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

Однако я не могу войти в систему с моим пользователем WP. Я всегда получаю это сообщение:

You do not have sufficient permissions to access this admin page.

Reason: The current user doesn't have the "read" capability that is required to access the "Dashboard" menu item.

ОБНОВЛЕНИЕ:

После удаления всех файлов в каталоге плагинов, сообщение стало следующим:

Sorry, you are not allowed to access this page.

Также прошел процесс загрузки базы данных WP и переписывание каждого вхождения имени домена с новое доменное имя, но после импорта данных я все еще не могу войти в систему.

0
задан 14 December 2018 в 13:40
1 ответ

Перед тем, как вы начнете настраивать свой сайт WordPress с использованием Nginx в качестве веб-сервера, вам необходимо выполнить некоторые действия. Вам необходимо создать резервные копии ваших основных файлов конфигурации.

По умолчанию Nginx не обрабатывает PHP. Nginx передаст PHP-обработку в php7.0-fpm, но вам нужно включить это. Вам необходимо:

cd / etc / nginx

$ ls -l
total 76
drwxr-xr-x 2 root root 4096 Jul 12  2017 conf.d
-rw-r--r-- 1 root root 1077 Feb 11  2017 fastcgi.conf
-rw-r--r-- 1 root root 1007 Feb 11  2017 fastcgi_params
drwxr-xr-x 2 root root 4096 Oct  3  2017 global
-rw-r--r-- 1 root root 2837 Feb 11  2017 koi-utf
-rw-r--r-- 1 root root 2223 Feb 11  2017 koi-win
-rw-r--r-- 1 root root 3957 Feb 11  2017 mime.types
drwxr-xr-x 2 root root 4096 Jul 12  2017 modules-available
drwxr-xr-x 2 root root 4096 Sep 23  2017 modules-enabled
-rw-r--r-- 1 root root 1042 Dec 15 06:05 nginx.conf
-rw-r--r-- 1 root root 1505 Sep 23  2017 nginx.conf.bak
-rw-r--r-- 1 root root  180 Feb 11  2017 proxy_params
-rw-r--r-- 1 root root  636 Feb 11  2017 scgi_params
drwxr-xr-x 2 root root 4096 Nov  4 06:10 sites-available
drwxr-xr-x 2 root root 4096 Oct  3  2017 sites-enabled
drwxr-xr-x 2 root root 4096 Nov  4 06:10 snippets
drwxr-xr-x 2 root root 4096 Sep 23  2017 ssl
-rw-r--r-- 1 root root  664 Feb 11  2017 uwsgi_params
-rw-r--r-- 1 root root 3071 Feb 11  2017 win-utf

Основной файл конфигурации - nginx.conf и принадлежит пользователю root, поэтому вам нужно использовать sudo следующим образом: sudo cp nginx.conf nginx.conf.bak

Далее: cd sites-available

$ ls -l
total 16
-rw-r--r-- 1 root root  526 Oct 10  2017 dancortes.press
-rw-r--r-- 1 root root 2410 Dec 14 16:49 default
-rw-r--r-- 1 root root 2410 Sep 23  2017 default.bak
-rw-r--r-- 1 root root 3211 Nov 27 13:08 microurb.com

default - это страница Nginx по умолчанию, которая появляется в вашем браузере, если вы вводите свой IP-адрес.

sudo cp default.bak

Фактический файл, который вы просматриваете в своем браузере, выглядит следующим образом:

cd / var / www / html

$ ls -l
total 8
-rw-r--r-- 1 root     root      20 Dec 14 08:50 ghi.php
-rw-rw-r-- 1 microurb www-data 612 Sep 22  2017 index.nginx-debian.html

Я имею в виду: index.nginx-debian .html . Этот файл изначально принадлежит root root , но обратите внимание на изменения разрешений, которые я сделал для него. Вам нужно сделать то же самое. Также обратите внимание на все настройки разрешений во всем, что я вставил до сих пор, вы хотите, чтобы ваши настройки разрешений выглядели точно так же, как вы видите выше для всего, что вы видите выше.

Вы также заметите, что у меня есть ghi.php , то есть проверить, обрабатывает ли ваш сервер Nginx PHP. Вы создаете файл через sudo vim ghi.php или sudo nano ghi.php в зависимости от того, что вам больше нравится.

Внутри него вы хотите вставить простой запрос PHP, например:

<?php
phpinfo();
?>

Выйти из сохранения изменений в файл. Затем перейдите в свой браузер `/ghi.php, если вы не можете это просмотреть: enter image description here

значит ваш сервер Nginx не обрабатывает PHP. Итак, вам необходимо: cd / etc / nginx , cd sites-available .

К настоящему времени у вас уже должна быть задняя часть по умолчанию, например:

-rw-r--r-- 1 root root 2410 Dec 14 16:49 default
-rw-r--r-- 1 root root 2410 Sep 23  2017 default.bak

Вы можете теперь отредактируйте файл по умолчанию: sudo vim default

location ~ \.php$ {
      include snippets/fastcgi-php.conf;

      # With php-fpm (or other unix sockets):
      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    # # With php-cgi (or other tcp sockets):
    # fastcgi_pass 127.0.0.1:9000;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    # deny all;
    #}
  }

Первая строка выше с ~ выполняет регулярное выражение на PHP, которое ищет файлы PHP для чтения. В вашем случае это может быть закомментировано, поэтому раскомментируйте это и строку для использования фрагментов.

Вы также хотите раскомментировать эту строку: fastcgi_pass unix: /var/run/php/php7.0-fpm. sock;

Также удалите хэш в последней скобке.

Директива location теперь будет обрабатывать файлы PHP, включая fastcgi_pass , который передаст PHP на php7.0-fpm

Выйдите, сохраните изменения.

Проверьте конфигурацию: sudo nginx -t и вы хотите увидеть следующее:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

sudo service nginx reload

Вернитесь в свой браузер: `/ghi.php и вы должны увидеть результат, который я показал выше.

Не забудьте сделать то, что я явно забыл сделать:

cd / var / www / html /

$ ls -l
total 8
-rw-r--r-- 1 root     root      20 Dec 14 08:50 ghi.php
-rw-rw-r-- 1 microurb www-data 612 Sep 22  2017 index.nginx-debian.html

sudo rm ghi.php

1
ответ дан 4 December 2019 в 15:48

Теги

Похожие вопросы