php5-fastcgi работает с nginx, но не работает с nginx + varnish (502 Bad Gateway)
есть ли у кого-нибудь предложение, что я могу изменить, чтобы лак работал?
Это моя конфигурация:
(прослушивание 80) nginx (запрос 8181) ==> (прослушивание 8181) varnish ==> (прослушивание 9090) php5-fastcgi
/etc/nginx/conf.d/mydomain.com
server {
listen 80;
server_name mydomain.com;
index index.html index.htm index.php;
keepalive_timeout 30;
root /var/www/assets;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~\.php$ {
root /var/www/api;
add_header Access-Control-Allow-Origin *;
fastcgi_pass 127.0.0.1:8181;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ ^/(api|wp) {
root /var/www/api;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
}
/ и т.д. / по умолчанию / лак
START=yes
NFILES=131072
MEMLOCK=82000
DAEMON_OPTS="-a :8181 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256M"
/etc/varnish/default.vlc
backend default {
.host = "127.0.0.1";
.port = "9090";
}
sub vcl_recv {
set req.backend = default;
if (!(req.url ~ "wp-(login|admin)")) {
unset req.http.cookie;
}
return(lookup);
}
sub vcl_miss {
return(fetch);
}
sub vcl_hit {
return(deliver);
}
sub vcl_fetch {
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
}
set beresp.ttl = 24h;
set beresp.http.X-Cacheable = "YES";
unset beresp.http.Vary;
return(deliver);
}
sub vcl_deliver {
return(deliver);
}
/ usr / bin / php5-fastcgi-p
#!/bin/bash
FASTCGI_USER=user
FASTCGI_GROUP=www-data
PORT=9090
ADDRESS=127.0.0.1
PIDFILE=/var/run/php5-fastcgi.pid
CHILDREN=4
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -a $ADDRESS -p $PORT -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
(на Ubuntu 10.04 lucid lynx)
Эта настройка в настоящее время не работает (502 Bad Gateway).
Я также получаю пару сообщений в журнале varnishlog, когда делаю свои запросы
0 CLI - Wr 200 19 PONG 1380029665 1.0
11 SessionOpen c 127.0.0.1 42489 :8181
11 Debug c herding
11 SessionClose c no request
11 StatSess c 127.0.0.1 42489 0 1 0 0 0 0 0 0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1380029668 1.0
0 CLI - Rd ping
поэтому я попробовал другую конфигурацию, в которой nginx использует лак, и он работает как шармы.
(слушайте 80) nginx ==> (слушайте 9090) php5-fastcgi
Обычно люди предполагают, что это ошибка spawn-fcgi, но я думаю, что это скорее в конфигурации varnish
(Я работаю над Ubuntu 10.04, поэтому возможность использования php-fpm недоступна.)
вот что я получаю с netstat-nlp
tcp 0 0 0.0.0.0:8181 0.0.0.0:* LISTEN 20886/varnishd
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 20989/php5-cgi
tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 20885/varnishd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1478/nginx.conf
tcp6 0 0 :::8181 :::* LISTEN 20886/varnishd
Varnish понимает HTTP, но чтобы подключиться к вашему быстрому CGI-демону PHP, он должен знать стандарт CGI. Вы не можете подключить Varnish к вашему PHP-демону. Должен быть веб-сервер, с которым Varnish может разговаривать и который подключается к PHP. Возможно, настройка Varnish-Nginx-Php имеет больше смысла.
Если вы ищете ускорение Php, используйте кеширование в самом Php и объедините его с хранилищами ключей и значений на основе RAM, такими как Memcached или Redis, или другими базами данных без SQL.