Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Nginx上启用gzip而不使用';http';此处不允许使用指令“;错误_Nginx_Gzip - Fatal编程技术网

在Nginx上启用gzip而不使用';http';此处不允许使用指令“;错误

在Nginx上启用gzip而不使用';http';此处不允许使用指令“;错误,nginx,gzip,Nginx,Gzip,我继承了一个需要启用gzip的代码库。我将这些行添加到我的nginx staging.conf文件中(该文件显示在另外两个位置:/etc/nginx/sites enabled/和/etc/nginx/sites available/): 但是当我尝试重新启动nginx时,它失败了(没有任何错误消息),运行“sudo nginx”会导致以下错误:nginx:[emerg]/etc/nginx/sites enabled/staging.conf:37中不允许使用“http”指令 这是整个conf

我继承了一个需要启用gzip的代码库。我将这些行添加到我的nginx staging.conf文件中(该文件显示在另外两个位置:/etc/nginx/sites enabled/和/etc/nginx/sites available/):

但是当我尝试重新启动nginx时,它失败了(没有任何错误消息),运行“sudo nginx”会导致以下错误:
nginx:[emerg]/etc/nginx/sites enabled/staging.conf:37中不允许使用“http”指令

这是整个conf文件:

# Myexample staging nginx setup. This is meant to be included in /etc/nginx/sites-available.

ssl_certificate      /home/django/myexample.io/conf/nginx/wildcard-ssl.crt;
ssl_certificate_key  /home/django/myexample.io/conf/nginx/wildcard-ssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

server {
    listen 80;
    listen 443 ssl;
    server_name www.stagingpy.myexample.io;

    return 301 $scheme://stagingpy.myexample.io$request_uri;
}

server {
    listen 80;
    listen 443 ssl;
    server_name stagingpy.myexample.io;

    access_log /var/log/nginx/myexample_access.log;
    error_log  /var/log/nginx/myexample_error.log;

    location ^~ /apple-touch-icon { root /home/django/myexample.io/static/ico/; expires  1h; }
    location = /favicon.ico       { root /home/django/myexample.io/static/ico/; expires  1h; }
    location = /humans.txt        { root /home/django/myexample.io/static/txt/; expires  1h; }
    location = /robots.txt        { root /home/django/myexample.io/static/txt/; expires  1h; }
    location /static/             { root /home/django/myexample.io/           ; expires 30d; }

    location / {
        uwsgi_pass  unix:///var/run/uwsgi/app/staging/socket;
        include     uwsgi_params;
    }
}

http {
    # enable gzip compression
    gzip             on;
    gzip_min_length  1100;
    gzip_buffers     4 32k;
    gzip_types       text/plain application/x-javascript text/xml text/css;
    gzip_vary        on;
    gzip_disable     "MSIE [1-6]\.(?!.*SV1)";
    # end gzip configuration
}
我试着把http块放在服务器块之后,服务器块之前,我试着把服务器块放在http块中,但是这些都不起作用。我在生产服务器上遇到了同样的问题(production.conf文件看起来几乎相同,只是没有“stagingpy”子域)。我还尝试将gzip行完全从http块中删除,这在运行“sudo nginx”时引发了此错误:
nginx:[emerg]“gzip”指令在/etc/nginx/sites enabled/staging.conf:38中重复;但是,当我查看该路径下的文件时,没有看到任何其他gzip行

http块应该放在哪里才能成功重启nginx并启用gzip进行文件压缩


编辑:我也尝试过,但即使在我从staging.conf文件中删除了http块之后,我还是得到了关于gzip是重复的错误(
nginx:[emerg]“gzip”指令在/etc/nginx/conf.d/gzip.conf:1中是重复的)。这让我相信gzip已经在conf文件中的某个地方了,但是运行
find/etc/nginx/-type f-name“*.conf”| grep gzip-n
只会得到gzip.conf文件。根据一些在线gzip测试,该网站启用了gzip,但其他人说没有

看起来有另一个我不知道的nginx.conf文件(不知道为什么它在运行find时没有出现)包含gzip,因此出现了重复错误。在其他几个网站(如)上检查了我的网站后,似乎该网站没有压缩是错误的。我不知道为什么谷歌PageSpeed仍然建议压缩,但这是我所能做到的

# Myexample staging nginx setup. This is meant to be included in /etc/nginx/sites-available.

ssl_certificate      /home/django/myexample.io/conf/nginx/wildcard-ssl.crt;
ssl_certificate_key  /home/django/myexample.io/conf/nginx/wildcard-ssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

server {
    listen 80;
    listen 443 ssl;
    server_name www.stagingpy.myexample.io;

    return 301 $scheme://stagingpy.myexample.io$request_uri;
}

server {
    listen 80;
    listen 443 ssl;
    server_name stagingpy.myexample.io;

    access_log /var/log/nginx/myexample_access.log;
    error_log  /var/log/nginx/myexample_error.log;

    location ^~ /apple-touch-icon { root /home/django/myexample.io/static/ico/; expires  1h; }
    location = /favicon.ico       { root /home/django/myexample.io/static/ico/; expires  1h; }
    location = /humans.txt        { root /home/django/myexample.io/static/txt/; expires  1h; }
    location = /robots.txt        { root /home/django/myexample.io/static/txt/; expires  1h; }
    location /static/             { root /home/django/myexample.io/           ; expires 30d; }

    location / {
        uwsgi_pass  unix:///var/run/uwsgi/app/staging/socket;
        include     uwsgi_params;
    }
}

http {
    # enable gzip compression
    gzip             on;
    gzip_min_length  1100;
    gzip_buffers     4 32k;
    gzip_types       text/plain application/x-javascript text/xml text/css;
    gzip_vary        on;
    gzip_disable     "MSIE [1-6]\.(?!.*SV1)";
    # end gzip configuration
}