2

私は 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;
}
4

1 に答える 1