Как настроить Nginx для Ember.js + WordPress?

Сценарий заключается в том, что я хотел бы использовать WordPress в качестве поставщика API бэкэнда для нашего веб-приложения Ember.js.

Интерфейс Ember.js должен обслуживаться из корня, а в идеале экземпляр WordPress должен быть доступен при переходе в подкаталог. Так например на localhost это было бы http://localhost а также http://localhost/wordpress

На диске эти два развернуты в /srv/http/ember а также /srv/http/wordpress соответственно.

Я пытался собрать конфигурацию, следуя примеру на сайте Nginx:
https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Конфиг:

http {

upstream php {
server   unix:/run/php-fpm/php-fpm.sock;
}

server {
listen 80;
server_name localhost;
root /srv/http/ember;
index index.html;
try_files $uri $uri/ /index.html?/$request_uri;

location /wordpress {
root /srv/http/wordpress;
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
fastcgi_split_path_info ^(/wordpress)(/.*)$;
}

}

}

Однако это, очевидно, не правильное решение.
При попытке получить доступ к адресу http://localhost/wordpress/index.php Я получаю следующее в журналах:

2016/05/01 17:50:14 [error] 4332#4332: *3 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /wordpress/index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "localhost"

Рецепт не ясно, где поставить root директива для расположения WordPress. Я тоже пробовал с добавлением index index.phpчто тоже не помогает.

(Приложение Ember работает отлично.)

1

Решение

Из вашего вопроса кажется, что location ~ \.php$ Блок используется только WordPress. Однако для этого нужен корень /srv/http чтобы найти файлы сценариев для URI, начинающихся с /wordpress под местным путем /srv/http/wordpress,

Поскольку в двух местах используется один и тот же корень WordPress, возможно /srv/http по умолчанию (то есть наследуется от server блокировать) и двигаться root /srv/http/ember; в отдельный location / блок.

server {
listen 80;
server_name localhost;
root /srv/http;

location / {
root /srv/http/ember;
index index.html;
try_files $uri $uri/ /index.html?/$request_uri;
}

location /wordpress {
index index.php;
try_files $uri $uri/ /wordpress/index.php?$args;
}

location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
}

Обратите внимание, что URI по умолчанию в location /wordpress является /wordpress/index.php и не /index.php как вы изначально имели.

Я явно поставил SCRIPT_FILENAME как это может или не может появиться в вашем fastcgi.conf файл.

fastcgi_split_path_info был удален, так как он не нужен в вашем конкретном случае, и я думаю, что это на самом деле сломает WordPress так, как вы это сделали.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]