0

memcachedから直接htmlコンテンツを提供するようにnginxを設定しましたが、独自のバックエンドを使用してPHPにフェイルオーバーします(従来の設定ではないため、構成)が、ページがPHPで設定されてmemcachedから取得されると、nginxが表示されますそれを見つけるために、しかしそれからちょうど内部のバイナリデータのように見えるもので「ダウンロード」と呼ばれるファイルをダウンロードします。

これはnginx.confファイルであり、拡張されたmemcachedモジュールを使用してソースから構築されています。

worker_processes  1;

events {
    worker_connections  1024;
}

http {

    include /usr/local/nginx/conf/mime.types;
    default_type application/octet-stream;

    server {
        listen 80;
        server_name localhost;
        location / {
                root /var/www;
                index index.html;
        }
        location ~* \.php$ {
                root /var/www;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                include fastcgi_params;
        }
    }

    server {
        listen 80;
        server_name mydomain.com;
        access_log /path/to/access/log/access_log;
        error_log /path/to/error/log/error_log;
        root /u1/live/sites/public_html;

        location ~* \.(jpg|png|gif|css|js|swf|flv|ico|html|woff|ttf|svg|htm)$ {
                try_files $uri $uri/ $uri.html @notcached;
        }

        location ~* \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_read_timeout 240;
                include fastcgi_params;
        }

        location / {
                set $enhanced_memcached_key "$server_name$request_uri";
                enhanced_memcached_hash_keys_with_md5 on;
                enhanced_memcached_pass memcache.local:11211;
                error_page 404 = @notcached;
        }

        location @memcache {
                set $enhanced_memcached_key "$server_name$request_uri";
                enhanced_memcached_hash_keys_with_md5 on;
                enhanced_memcached_pass memcache.local:11211;
                error_page 404 = @notcached;
        }

        location @notcached {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME /path/to/main/php/file/index.html;
                fastcgi_param PATH_INFO $fastcgi_script_name;
                fastcgi_read_timeout 240;
                include fastcgi_params;
        }

    }

}
4

1 に答える 1

0

その根本的な理由は、memcached の結果に自動的に関連付けられた MIME タイプがないためです。これは、デフォルトでバイナリとして提供されることを意味します。

これを修正するには、次のディレクティブを @memcached の場所に追加します。

default_type text/html;
于 2013-02-17T21:21:13.587 に答える