nginx的server_names_hash_bucket_size问题

之前nginx可以正常启动的,后来为了测试方便,就增加多了一些域名也都转向到相同的upstream里面,启动不起来。

去logs/errors.log查看,发现如下字样:

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

原来是由于增加多域名后,在默认大小下已经不能正常hash存储了,需要去修改此参数的大小。

修改conf/nginx.conf中的http节为如下示例

http {

server_names_hash_bucket_size 64;

include       mime.types;

default_type  application/octet-stream;

.....省略

此处为了以后增加方便,没有直接修改为日志中提示的32大小,而是直接修改为64了

再次启动,正常运行

下面是在中文wiki上摘抄的一段说明
  保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果 hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.

时间: 2024-11-07 23:09:10

nginx的server_names_hash_bucket_size问题的相关文章

Ubuntu 安装nginx

1.更新Ubuntu # add-apt-repository 仓库名称 # apt-get update # apt-get install -y libssl1.0.2 openssl 2.安装Nginx # apt-get install -y nginx # apt-get install -y nginx-extras 3.设置Nginx通用配置文件 cat /etc/nginx/nginx.conf user www-data; #ubuntu里面nginx用户名 worker_pr

nginx那些事儿

本文为我学习nginx时的笔记与心得,如有错误或者不当的地方,还望不吝指出 1 基本概念 1.1 正向代理和反向代理 正向代理: 一般来说,我们说的代理技术就是指正向代理技术. 使用正向代理技术一般用来访问我们无法访问的服务器.正向代理服务器介于用户和目标服务器之间,比如用户A想去访问目标服务器B,但是各种原因无法直接访问,这时就可以通过使用正向代理服务器C,用户A向代理服务器C发送一个请求并指定目标服务器B,代理服务器会将请求转发给B并将获取的结果返回给用户A. 使用正向代理,往往需要客户去进

nginx反向代理中表单提交502

nginx的参数调整 nginx.conf server_names_hash_bucket_size 256; client_header_buffer_size 256k; large_client_header_buffers 4 256k; client_max_body_size 50m; sendfile on; tcp_nopush     on; keepalive_timeout 200; tcp_nodelay on; client_body_buffer_size    

nginx ip_hash负载

nginx.config       server_names_hash_bucket_size 64; upstream 192.168.0.40 { ip_hash; server 192.168.0.55 max_fails=3 fail_timeout=20s weight=9; server 192.168.0.56 max_fails=3 fail_timeout=20s weight=7; server 192.168.0.57 max_fails=3 fail_timeout=2

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

Nginx做为CDN缓存负载均衡代理的配置实现

系统架构: nginx+tomcat+mysql 本文只做Nginx做为CDN缓存负载均衡代理的配置实现的介绍 相关软件: nginx-1.8.1.tar.gz ngx_cache_purge-2.3.tar.gz (用于手动清理缓存) 一.nginx安装 [[email protected] ~]tar -xf nginx-1.8.1.tar.gz [[email protected] ~]tar -xf ngx_cache_purge-2.3.tar.gz -C /usr/local/ngx

nginx中级应用

1.安装监控模块 Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: . /configure –with-http_stub_status_module 配置文件中启动监控 server下: location /nginx-status { allow -------- allow --------//允许的ip deny all;// stub_status on; acce

Nginx配置文件nginx.conf中文详解

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值

linux下nginx的安装

以Red Hat Enterprise Linux 5为例进行讲解. 相关系列: linux下jdk的安装 linux下ant的安装 linux下redis的安装 linux下svn的安装 linux下nginx的安装 linux下graphviz的安装 linux下doxygen的安装 安装nginx版本为0.8.36 一.下载nginx 下载地址:http://www.nginx.org/ 选择nginx-0.8.36 将该下载包拷贝到/usr/local/下(随意了,找个地方就好) 二.安