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

xeufq47z  于 2023-03-29  发布在  Nginx
关注(0)|答案(3)|浏览(213)

下面是我的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

这个相同的配置以前工作过,没有任何问题。我错过了什么?

ogq8wdun

ogq8wdun1#

即使OP已经超过九年了,错误仍然会发生。我通常会先在Web上搜索这类问题,然后找到this tip

  • 您可以通过在http块中的nginx.conf中添加以下行来解决该错误:*
server_names_hash_bucket_size 128;

但这并没有解决问题,只有当我删除最后一个“application/vnd.openxmlformats-officedocument.*”MIME类型时,错误才消失了。
我注意到有人在五年多前就把这个问题作为issue with nginx.org提出来了,但这个问题仍然没有解决。
长话短说,最好避免gzip_types指令中的MS Office XML mime类型。

knpiaxh1

knpiaxh12#

在我的头撞到墙上几分钟后,我只是决定“管他呢,我会修复第一个错误,看看会发生什么。”你瞧,删除gzip_types声明中无关的text/javascript MIME类型解决了这个问题。
希望这是有帮助的!

eqfvzcg8

eqfvzcg83#

为了那些迟到的人的利益,但没有执行第一条消息:
您对第一个错误的修复具有缩短导致第二条消息的行的副作用。
在我自己的例子中,一个愚蠢的错误是把MIME类型列表放在引号里,而不加引号。
您不能增加'test_types_hash'的存储桶大小,因为没有指令(ref.https://trac.nginx.org/nginx/ticket/203),因此减少MIME类型列表是唯一的选择。
参考:http://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size

相关问题