У нас Nginx слушает по портам 80
а также 443
и обслуживая наш основной сайт. Допустим, его зовут demosite.com.
Он работает на экземпляре AWS EC2, и трафик проходит через ELB.
Мне нужно развернуть WordPress на той же машине, чтобы он был частью основного сайта и доступен через demosite.com/blog.
Есть причина, по которой мы решили настроить WordPress для использования в качестве Vhost на отдельном порту 8088 (HTTP, без SSL).
На ELB я создал правило:
IF Path is /blog/
THEN
Forward to Demosite-WP-blog
Демосайт-WP-блог — это целевая группа, указывающая на порт моей машины 8088.
Конфигурация WordPress Nginx vhost:
server {
listen 8088 default_server;
access_log /var/log/nginx/blog.access.log;
error_log /var/log/nginx/blog.error.log;
server_name demosite.com www.demosite.com;
root /var/www/wordpress;
include /etc/nginx/nginx-wp-common.conf;
}
/etc/nginx/nginx-wp-common.conf:
charset utf-8;
location / {
index index.php index.html;
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_read_timeout 3600s;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_split_path_info ^(/blog)(/.*)$;
fastcgi_index index.php;
}
# this was added later
location /blog {
root /var/www/wordpress;
index index.php index.html index.htm;
rewrite /wp-admin$ $scheme://$host$uri/index.php?q=$1 permanent;
try_files $uri $uri/ @blog;
}
location @blog {
rewrite ^/blog(.*) /blog/index.php?q=$1;
}
WordPress изначально был настроен как отдельный сайт, прошел процесс настройки веб-интерфейса, чтобы убедиться, что он работает и т. Д. Т.е. Я настроил временное имя субдомена wpblog.demosite.com, настроил его — оно работало нормально. Затем я перенастроил его, чтобы он стал частью основного сайта.
Вот соответствующая часть /var/www/wordpress/wp-config.php
который я добавил для этой цели:
define( 'WP_SITEURL', 'https://demosite.com' );
define( 'WP_HOME', 'https://demosite.com/blog' );
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')
$_SERVER['HTTPS'] = 'on';
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
Путь к контенту:
/var/www/wordpress
total 204
drwxr-xr-x 5 root www-data 4096 Sep 26 23:15 .
drwxr-xr-x 8 root root 4096 Sep 26 00:47 ..
-rw-r--r-- 1 root www-data 418 Sep 25 2013 index.php
-rw-r--r-- 1 root www-data 19935 Jan 6 2018 license.txt
-rw-r--r-- 1 root www-data 7415 Mar 18 2018 readme.html
-rw-r--r-- 1 root www-data 5458 May 1 22:10 wp-activate.php
drwxr-xr-x 9 root www-data 4096 Sep 18 22:00 wp-admin
-rw-r--r-- 1 root www-data 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 root www-data 1889 May 2 22:11 wp-comments-post.php
-rw-r----- 1 root www-data 3633 Sep 26 23:01 wp-config.php
-rw-r--r-- 1 root www-data 2853 Dec 16 2015 wp-config-sample.php
drwxr-xr-x 5 root www-data 4096 Sep 26 00:26 wp-content
-rw-r--r-- 1 root www-data 3669 Aug 20 2017 wp-cron.php
drwxr-xr-x 18 root www-data 12288 Sep 18 22:00 wp-includes
-rw-r--r-- 1 root www-data 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 root www-data 3306 Aug 22 2017 wp-load.php
-rw-r--r-- 1 root www-data 37794 Jul 16 14:14 wp-login.php
-rw-r--r-- 1 root www-data 8048 Jan 11 2017 wp-mail.php
-rw-r--r-- 1 root www-data 16246 Oct 4 2017 wp-settings.php
-rw-r--r-- 1 root www-data 30091 Apr 29 23:10 wp-signup.php
-rw-r--r-- 1 root www-data 4620 Oct 23 2017 wp-trackback.php
-rw-r--r-- 1 root www-data 3065 Aug 31 2016 xmlrpc.php
Теперь, когда я пытаюсь открыть https://demosite.com/blog/
Я получаю, что главная страница WordPress не работает: нет CSS, нет изображений, шрифт по умолчанию, ссылки не работают.
Что я делаю не так и как можно правильно настроить его работу?
Задача ещё не решена.
Других решений пока нет …