微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Nginx上启用gzip,而不允许在此处使用“’http’指令”错误

我继承了需要启用gzip的代码库.我将这些行添加到我的Nginx staging.conf文件中(它显示在另外两个地方:/ etc / Nginx / sites-enabled /和/ etc / Nginx / sites-available /):

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
}

但是当我尝试重新启动Nginx时,它失败了(没有任何错误消息),并且运行“sudo Nginx”会给我带来这个错误Nginx:[emerg]“http”指令在/ etc / Nginx / sites-enabled中不允许/staging.conf:37

这是整个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块中,但这些都没有奏效.我在生产服务器上遇到了同样的问题(除了没有“stagingpy”子域外,production.conf文件看起来几乎一样).我也尝试将gzip行完全从http块中删除,并在运行“sudo Nginx”时出现此错误Nginx:[emerg]“gzip”指令在/etc/Nginx/sites-enabled/staging.conf中重复:38;但是,当我查看该路径中的文件时,我没有看到任何其他gzip行.

http块应该在哪里,以便我可以成功重启Nginx并启用gzip进行文件压缩?

编辑:我也试过creating a gzip.conf file in conf.d as shown here,但即使我从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,因此出现重复错误.在其他一些网站(例如http://www.whatsmyip.org/http-compression-test/)上检查我的网站后,似乎http://checkgzipcompression.com/错误的网站没有压缩.我不确定为什么谷歌PageSpeed仍然建议压缩,但这是我能够得到的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐