Nginx无法启动,说“无法构建测试test_types_hash”

时间:2013-10-25 00:25:19

标签: nginx

这是我的nginx.conf:

user www-data;
worker_processes 1;
worker_rlimit_nofile 8192;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 2048;
    # debug_connection 192.168.1.1;
    # multi_accept on;
}

http {
    server_tokens off;
    include mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile on;
    tcp_nodelay on;

    gzip on;

    # http://wiki.nginx.org/HttpGzipModule#gzip_disable
    gzip_disable "msie6";
    gzip_types text/javascript text/css text/plain text/xml application/xml application/xml+rss application/x-javascript;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.ngx;

    #tcp_nopush on;
    #keepalive_timeout  0;
}

当我尝试启动nginx时,这就是我所看到的:

nginx: [warn] duplicate MIME type "text/javascript" in /etc/nginx/nginx.conf:27
nginx: [emerg] could not build the test_types_hash, you should increase either test_types_hash_max_size: 2048 or test_types_hash_bucket_size: 64

这种相同的配置以前没有问题。我错过了什么?

2 个答案:

答案 0 :(得分:10)

将我的头撞在墙上几分钟后,我才决定“哎呀,我会解决第一个错误并看看会发生什么。”瞧,在gzip_types声明中删除无关的text / javascript MIME类型修复了问题。

希望这有用!

答案 1 :(得分:1)

为了使任何晚到这里但未体验到第一个消息的人受益:

您对第一个错误的解决具有缩短导致第二条消息的行的副作用。

在我自己的情况下,一个愚蠢的错误是将MIME类型的列表放在引号中。不用引用。

由于没有指令(参考https://trac.nginx.org/nginx/ticket/203),因此您无法增加'test_types_hash'的存储桶大小,因此减少MIME类型列表是唯一的选择。

参考http://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size