#php #wordpress #nginx
#php #wordpress #nginx
Вопрос:
Похоже на дубликат? Нет, это не так!
Это мои конфигурации:
- ОС: сервер Fedora 33
- PHP: PHP 7.4.13
- MySQL: MySQL 8.0
Я бы настроил WordPress на своем сервере следующим образом:
- Nginx работает с Интернетом.
- Nginx передает запросы в PHP-fpm.
- После этого PHP-fpm обрабатывает все.
Кажется, все работает нормально, но я не знаю, что, черт возьми, происходит? Буквально, любая тема не работает. Я перепробовал так много тем, но ни одна из них, похоже, не работает.
Взгляните на страницу: https://blog.harshrathod.dev
Я получаю это странное предупреждение, и стили вообще не вступают в силу:
Resource interpreted as Stylesheet but transferred with MIME type text/html: "<URL>".
(index):29 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dashicons.min.css?ver=5.6".
(index):30 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/admin-bar.min.css?ver=5.6".
(index):31 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dist/block-library/style.min.css?ver=5.6".
(index):32 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-includes/css/dist/block-library/theme.min.css?ver=5.6".
(index):33 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-content/themes/twentynineteen/style.css?ver=1.8".
(index):34 Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://php.harshrathod.dev/wp-content/themes/twentynineteen/print.css?ver=1.8".
Это моя конфигурация nginx:
root /usr/share/wordpress;
location / {
try_files $uri $uri/ =404;
fastcgi_pass 127.0.0.1:4000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Комментарии:
1. Вероятно, это дубликат. Когда файл не найден, вы отправляете запрос, на
/index.php
который всегда отвечаетtest/html
(это хорошо, потому что именно так работают постоянные ссылки). Проблема в том, что эти файлы не найдены — либо потому, что они отсутствуют, защищены для чтения, либо Nginx неправильно настроен для их поиска.2. Хорошо, я предоставил свою конфигурацию nginx. Вы можете найти здесь что-нибудь странное?
3. Эта конфигурация отправляет запрос на PHP, который отвечает «доступ запрещен» как
text/html
. Вы должны начать с измененияlocation
наlocation ~ .php$
, чтобы файлы, отличные от PHP, обрабатывались как статические файлы. Полный рецепт задокументирован здесь .4. Хорошо, это решило мою проблему. Спасибо!
Ответ №1:
После прочтения этой проблемы я понял, что настоящая проблема связана с моей конфигурацией nginx.
Поскольку у меня есть только один и единственный маршрут, происходит то, что статические файлы также анализируются php-fpm и отправляются клиентам как html/txt
.
Решение этой проблемы заключается в том, что нам нужно иметь два разных маршрута:
- Один для всего статического.
- Второй для обработки файлов php.
Итак, результирующая конфигурация nginx будет выглядеть следующим образом:
root /usr/share/wordpress;
location / {
index index.php;
}
location ~ .php$ {
try_files $uri $uri/ =404;
fastcgi_pass 127.0.0.1:4000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}