У меня есть мой основной сайт, скажем, example.com
(с использованием ALB + EC2), в котором есть 2 сайта Wordpress с именами /press
и /diary
(они используют многосайтовый Wordpress)
По многим причинам я хочу создать новый сайт Wordpress для вызова blog
.
Я создал этот новый сайт, работающий на других ALB и EC2, и он прекрасно работает на поддомене blog.example.com
Теперь я хочу использовать суб-путь, например example.com/blog
вместо субдомена.
Я настроил основной сайт nginx для передачи всего доступа к пути / блогу новому балансировщику нагрузки сайта.
mainsite-nginx.conf
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location /healthcheck {
empty_gif;
access_log off;
break;
}
resolver 8.8.8.8;
resolver_timeout 5s;
set $blog_elb "blog-wp-lb-xxx.ap-northeast-1.elb.amazonaws.com";
location @blog {
proxy_pass https://$blog_elb;
}
location ~ ^/blog/?.* {
try_files $uri @blog;
}
if (!-e $request_filename) {
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ {
fastcgi_pass app:9000;
fastcgi_read_timeout 300;
fastcgi_index index.php;
fastcgi_param HTTPS $my_https;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_read_timeout 300;
fastcgi_index index.php;
fastcgi_param HTTPS $my_https;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
Новый WordPress сайт конфигурации nginx
server {
listen 80;
root /var/www/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
location /healthcheck {
empty_gif;
access_log off;
break;
}
location ~ /wp-admin/admin-ajax\.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_read_timeout 300;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
allow all;
}
location ~ (/wp-admin/.*\.php|wp-login\.php$) {
allow xx.xx.xx.xx/32;
allow xx.xx.xx.xx/32;
allow xx.xx.xx.xx/32;
deny all;
fastcgi_pass wordpress:9000;
fastcgi_read_timeout 300;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
URL-адрес сайта WordPress установлен на https://example.com/blog
Мои проблемы:
При доступе к https://example.com/blog
все css и js получают ошибку 404
В журнале опций разработчика браузера, похоже, браузер пытается получить доступ https://example.com/blog/wp-content/themes/mycustomtheme/css/bootstrap.min.css
Попытка получить файл, который не существует на главном сервере
При доступе к странице wp-admin я получил ошибку цикла перенаправления
Как мне это исправить.
Спасибо!