私は Apache 2 + Varnish のセットアップから Nginx だけに移行しましたが、このセットアップで ESI と fastcgi_cache をどのようにセットアップ/使用するべきかについて、ちょっと困っています。
まず第一に、ESI のアイデアは、ページのキャッシュ可能な部分をキャッシュするためにサーバーの前にリバース プロキシ レイヤーをセットアップし、次に esi を使用して動的部分を取得するというものでした。以前のセットアップでは、Varnish がリバース プロキシとして機能し、Apache は必要な場合にのみ esi リクエストを処理していました。
私の質問は、ここで Nginx が唯一のサーバーとして機能するようになったので、どうすれば動作させることができるでしょうか? リバース プロキシ サーバーなどとして実行する別の Nginx インスタンスをセットアップする必要がありますか? これに関するドキュメントは見つかりませんでした。
2 番目の質問は、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;
}