PHP-FPM 5.6 и Nginx 1.6.2, несомненно, обеспечат максимальную производительность, по крайней мере, по скорости. Итак, я хотел бы знать, есть ли какие-либо плюсы / минусы для добавления кеша лака для увеличения скорости. Я читал много блогов, в которых утверждается, что использование nginx + varnish - это немного излишне, но я до сих пор не получил отзывов, которые могли бы это оправдать.
Это зависит от того, как вы используете nginx. Если вы не используете какие-либо функции кеширования в nginx, то Varnish определенно принесет вам пользу. Вы должны решить, какую функцию будет выполнять каждый из них. При этом, если вы хотите использовать «двойное кэширование», я сомневаюсь, что это хорошая идея.
Возможно, вы могли бы рассказать нам о том, как устроен ваш стек ...
Фактически это зависит от вашего приложения.
Не имеет смысла ставить прокси Varnish перед веб-сервером Nginx, если вы обслуживаете только статические файлы.
Что касается ускорения ваших PHP-приложений, вы уже можете использовать Nginx (см. fastcgi_cache), чтобы применить кэширующий слой. Это могло быть уже простым решением для получения дополнительной скорости.
Однако есть случаи, когда использование Varnish может быть полезным:
пример
Приложение PHP должно отправлять правильные заголовки кеширования.
server {
listen 80;
listen [::]:80;
server_name www.example.com;
root /var/www/www.example.com/htdocs;
# CVE 2013-4547
if ($request_uri ~ " ") {
return 444;
}
location / {
try_files $uri index.php?url=$uri&$query_string;
}
location ~ \.php$ {
# global access log is off but for PHP we'd like to log
access_log /var/log/nginx/access.log vhosts;
# use fastCGI
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
# activate caching for fastCGI
fastcgi_cache php;
fastcgi_cache_bypass $cookie_PHPSESSID; # do not cache if session is active
fastcgi_cache_key "$scheme$request_method$host$request_uri"; # cache key
fastcgi_cache_use_stale error timeout invalid_header http_500; # stale on error
fastcgi_cache_valid 200 301 720s; # cache only HTTP-200 and HTTP-301 responses and define a TTL
fastcgi_pass_header Set-Cookie; # allow Set-Cookie header
fastcgi_no_cache $cookie_PHPSESSID; # do not cache if session is active
# include system wide fastCGI settings (Ubuntu/Debian style)
include fastcgi_params;
}
}