nginx устанавливает wordpress на /blog под моим доменным адресом

nginx устанавливает wordpress на /blog под моим доменным адресом

У меня есть домен 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".

Связанный контент