特定の場所とそのすべてのサブディレクトリでgzipを無効にするにはどうすればよいですか?私のメインサイトはhttp://mydomain.com
にあり、http://mydomain.com/foo
とhttp://mydomain.com/foo/bar
の両方に対してgzipをオフにしたいと思います。 gzip
はnginx.conf
で有効になっています。
以下に示すようにgzip
をオフにしてみましたが、Chromeの開発ツールの応答ヘッダーにはContent-Encoding:gzip
と表示されます。
Gzip /出力バッファリングを適切に無効にするにはどうすればよいですか?
試行:
server {
listen 80;
server_name www.mydomain.com mydomain.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/mydomain/public;
index index.php index.html;
location / {
gzip on;
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location /foo/ {
gzip off;
try_files $uri $uri/ /index.php?$args ;
}
}
nginx.conf
でgzip
をオフにし、名前付きの場所を使用してみました。ただし、gzipは常にオフになり、gzip on;
ブロックのlocation /
はgzipをオンに戻していないようです。何か案は?
server {
listen 80;
server_name www.mydomain.com mydomain.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/mydomain/public;
index index.php index.html;
location / {
try_files $uri $uri/ @php;
}
location /foo/ {
try_files $uri $uri/ @php_nogzip;
}
location @php {
gzip on;
try_files $uri $uri/ /index.php?$args ;
}
location @php_nogzip {
gzip off;
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
}
リクエストしているURLはtry_files
内のlocation ^~ /foo/
で処理されていると思いますが、これらのファイルがないため、それらは内部で別のlocation
ハンドラーにリダイレクトされます。 gzip off
を継承しています。
/foo
の場所で「名前付きの場所」を使用してみてから、「名前付き」の場所@fooNoGzip
をgzip off
内部とfascgi_pass
などで定義します。
ネクロマンシーのために:OPの更新されたnginx構成は、最終的に\.php$
ロケーションブロックによって処理されるため、機能していませんでした。
適切な解決策は、それを削除し、FastCGI(PHP-FPM)にリクエストを転送する場所として名前付きの場所を作成することです。
server {
listen 80;
server_name www.mydomain.com mydomain.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/mydomain/public;
index index.php index.html;
location / {
try_files $uri $uri/ @php;
}
location /foo/ {
try_files $uri $uri/ @php_nogzip;
}
location @php {
gzip on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location @php_nogzip {
gzip off;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
}
各場所は独立しているため、_gzip off
_に_@php_nogzip
_を設定しても_location ~ \.php$
_には適用されず、nginx/serverのデフォルトが使用されます。これがデフォルトであるため、gzipがオフになっている理由です。 _@php_nogzip
_のtry_filesによって配信されたファイルのみが圧縮されます。
私が見る唯一の方法は地図を使うことです。 httpブロックでの使用:
_map $uri $gz {
default "on";
~/foo/ "off";
}
_
次に、サーバーで:
_ location ~ \.php$ {
gzip $gz;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
_