
У меня есть домен example.com
, он обслуживает мой веб-сайт с помощью веб-сервера nginx, который указывает на порт 3000 контейнера nodejs docker с помощью proxy pass
опции в разделе /
location.
server {
listen 80 default_server;
server_name example.com www.example.com;
index index.php index.html;
access_log /var/log/nginx/access_example.com.log;
error_log /var/log/nginx/error_example.com.log;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Теперь я хочу добавить сайт WordPress, /blog
поэтому я добавил эти настройки в блок сервера.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location /blog {
root /var/www;
try_files $uri $uri/ =404;
}
Почему я не могу получить доступ к свежеустановленному WordPress, /var/www/blog/
если я запускаю его curl http://example.com/blog/license.txt
на своем терминале? Все в порядке, и я вижу содержимое license.txt
файла, /var/www/blog/
но index.php
он не загружается, хотя index.html
я добавил его для теста.
Я думаю, что проблема в try_files $uri $uri/ =404;
линии, но я не нашел ничего полезного. Любая помощь будет оценена по достоинству.
решение1
Как вы, вероятно, знаете, Wordpress использует архитектуру фронт-контроллера, то есть точкой входа для запуска любого PHP-скрипта является $WORDPRESS_ROOT/index.php. Вам нужно указать nginx направлять запросы соответствующим образом:
try_files $uri $uri/ /blog/index.php?$args;
Обратите внимание, что запросы на большую часть статического контента будут обрабатываться одним из первых 2 значений. Обработчика 404 нет, поскольку Wordpress должен сам обрабатывать сценарий.
но index.php не загружен
хм, не очень содержательное описание того, что произошло - т.е. вы явно указали ..../index.php или просто .../ ? Какой ответ вы получили? Что было в ваших логах?
Для PHP (и для большинства обработчиков fcgi) требуется довольно много настроек, которые обычно включены в другом месте вашей конфигурации. В Ubuntu я бы ожидал, что это уже будет установлено, если установлено из репозитория, но было бы желательно протестировать это. Я бы также предложил решить эту проблему ДО того, как вносить изменения в front-controller выше, поскольку это несколько усложнит ситуацию. Используйте простой PHP-скрипт "hello world".