Я не уверен, что это проблема с изменением доменного имени на сайте 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 и переписывание каждого вхождения имени домена с новое доменное имя, но после импорта данных я все еще не могу войти в систему.
Перед тем, как вы начнете настраивать свой сайт 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, если вы не можете это просмотреть:
значит ваш сервер 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