下面是我的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
这个相同的配置以前工作过,没有任何问题。我错过了什么?
3条答案
按热度按时间ogq8wdun1#
即使OP已经超过九年了,错误仍然会发生。我通常会先在Web上搜索这类问题,然后找到this tip:
但这并没有解决问题,只有当我删除最后一个“application/vnd.openxmlformats-officedocument.*”MIME类型时,错误才消失了。
我注意到有人在五年多前就把这个问题作为issue with nginx.org提出来了,但这个问题仍然没有解决。
长话短说,最好避免gzip_types指令中的MS Office XML mime类型。
knpiaxh12#
在我的头撞到墙上几分钟后,我只是决定“管他呢,我会修复第一个错误,看看会发生什么。”你瞧,删除gzip_types声明中无关的text/javascript MIME类型解决了这个问题。
希望这是有帮助的!
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