Я перешел от установки Apache 2 + Varnish к Nginx в одиночку, и я как бы зациклился на том, как мне настроить ESI, а также fastcgi_cache в этой настройке.Кэширование Symfony 2 на Nginx
Прежде всего, идея ESI заключалась в том, что мы устанавливаем обратный прокси-сервер перед сервером для кэширования частей, относящихся к кэшу, а затем с помощью esi для извлечения динамических частей. В моей предыдущей настройке Varnish действовал как обратный прокси-сервер, и Apache обрабатывает только запросы esi, когда это необходимо.
Мой вопрос в том, что теперь, когда Nginx действует как единственный сервер здесь, как мне заставить его работать? Нужно ли мне настраивать другой экземпляр Nginx, который работает как обратный прокси-сервер или что-то еще? Я не мог найти документа об этом.
Второй вопрос касается fastcgi_cache. Я установил его, как описано ниже, но кеш не работает для меня, никакого файла кэша не заполняется, и я всегда получаю «MISS». Интересно, это потому, что мне нужно установить max-age/shared-max-age в каждом контроллере, чтобы каждый работал?
fastcgi_cache_path /run levels=1:2 keys_zone=www_mysite_com:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /var/www/mysite.com/w/w/w/www/web;
index index.php index.html index.htm;
# Make site accessible from http://www.mysite.com
server_name www.mysite.com;
# Specify a character set
charset utf-8;
# strip app.php/ prefix if it is present
rewrite ^/app\.php/?(.*)$ /$1 permanent;
# h5bp nginx configs
# include conf/h5bp.conf;
location/{
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
# Deny access to .htaccess
location ~ /\.ht {
deny all;
}
# Don't log robots.txt or favicon.ico files
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { access_log off; log_not_found off; }
# 404 errors handled by our application, for instance Symfony
error_page 404 /app.php;
# pass the PHP scripts to FastCGI server from upstream phpfcgi
location ~ ^/(app|app_dev|backend/app|backend/app_dev|config)\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME web/$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_cache www_mysite_com;
fastcgi_cache_valid 200 60m;
}
# Only for nginx-naxsi : process denied requests
#location /RequestDenied {
# For example, return an error code
#return 418;
#}
# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
}