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