У меня есть приложение rails (назовем его myapp), работающее на www.myapp.com. Я хочу добавить блог на wordpress по адресу www.myapp.com/blog. Веб-сервер для приложения rails тонкий (см. Блок восходящего потока). Wordpress работает с php-fastcgi.
Приложение rails работает нормально. Моя проблема в следующем: в /home/myapp/myapp/log/error.log error
Я получил:
2013/06/24 10:19:40 [error] 26066#0: *4 connect() failed (111: Connection refused) while connecti\
ng to upstream, client: xx.xx.138.20, server: www.myapp.com, request: "GET /blog/ HTTP/1.1", \
upstream: "fastcgi://127.0.0.1:9000", host: "www.myapp.com"
Вот файл конфигурации nginx:
upstream myapp {
server unix:/tmp/thin_myapp.0.sock;
server unix:/tmp/thin_myapp.1.sock;
server unix:/tmp/thin_myapp2.sock;
}
server {
listen 80;
server_name www.myapp.com;
client_max_body_size 20M;
access_log /home/myapp/myapp/log/access.log;
error_log /home/myapp/myapp/log/error.log error;
root /home/myapp/myapp/public;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
# Index HTML Files
if (-f $document_root/cache/$uri/index.html) {
rewrite (.*) /cache/$1/index.html break;
}
if (!-f $request_filename) {
proxy_pass http://myapp;
break;
}
# try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
}
location /blog/ {
root /var/www/wordpress;
fastcgi_index index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /blog/index.php?q=$1 last;
}
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
fastcgi_pass localhost:9000; # port to FastCGI
}
}
Есть идеи, почему это не работает? Как мне убедиться, что php-factcgi настроен правильно?
Редактировать: Я не могу проверить, работает ли fastcgi с telnet:
$> telnet 127.0.0.1 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
А это не так.
php-fpm не запущен. Просто начни.
Корень проблемы был в том, что php-fpm не работал (как указал @Michael)
Я также изменил блок местоположения, потому что ресурсы не обслуживались с исходной конфигурацией:
location ^~ /blog {
root /var/www/wordpress;
index index.php index.html index.htm;
try_files $uri $uri/ /blog/index.php?$args;
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
#if ($uri !~ "^/images/") {
# fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
#}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
fastcgi_pass localhost:9000;
}
}