当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪有关nginx的默认主机头的一个问题      使用nginx作多域名混跑的proxy_cache时遇到一问题:当一个非加速server_name的请求到达时,nginx不会像squid那样返回一个ERR_DNS_FAIL,反而假装很正常的返回一个页面:   代码如下: http {     server.........
    ▪nginx中“nginx could not build the server_names_hash”的解决方法      问题:在一个服务器中增加了一些站点别名,差不多有20多个吧,重启nginx时,有如下的错误提示: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 解决方法: 在配置.........
    ▪如何在nginx中配置ip直接访问的默认站点      一般来说主机上每个ip上会对应几个不同的站点。于是就会出现一个问题,直接访问这个ip,访问的会是哪个站点呢? 在nginx中,每个站点都是由一个server段定义的,里面设定了监听的ip和端.........

[1]有关nginx的默认主机头的一个问题
    来源: 互联网  发布时间: 2013-12-24

使用nginx作多域名混跑的proxy_cache时遇到一问题:当一个非加速server_name的请求到达时,nginx不会像squid那样返回一个ERR_DNS_FAIL,反而假装很正常的返回一个页面:
 

代码如下:
http {
    server {
        server_name www.aaa.com;
        proxy_pass http://1.1.1.1;
    }
    server {
        server_name www.bbb.com;
        proxy_pass http://2.2.2.2;
    }
}

访问www.ccc.com的时候,nginx毫不犹豫的把www.aaa.com的页面内容返回给了client。在日志里记录:
MISS/200 GET http://www.ccc.com/ 1.1.1.1:80

如果把aaa和bbb的server{}顺序倒换,那ccc的回源地址就变成了2.2.2.2。
也就是说,解析不出、定义不到的域名请求,自动返回排在第一位的server内容。

解决方法:在最上头,也定义一个自己的server,就可以了:
 

代码如下:
http {
    server {
        root /cache;
        rewrite ^(.*) /error.htm permanent;
    }
    server {
        ……
    }
}

至于这个error.htm,有没有都一样,反正有就是301,没有就是404。
后面的web服务器为什么不检查Host直接给出内容,也是让人很郁闷的一点。
或许IIS也是如此吧。


    
[2]nginx中“nginx could not build the server_names_hash”的解决方法
    来源: 互联网  发布时间: 2013-12-24

问题:在一个服务器中增加了一些站点别名,差不多有20多个吧,重启nginx时,有如下的错误提示:
could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

解决方法:
在配置文件的http{}段增加一行配置:
server_names_hash_bucket_size 64;
如果64还不够,那么就按32的倍数往上加。

中文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的提示,那么首要的是增大前一个参数的大小。


    
[3]如何在nginx中配置ip直接访问的默认站点
    来源: 互联网  发布时间: 2013-12-24

一般来说主机上每个ip上会对应几个不同的站点。于是就会出现一个问题,直接访问这个ip,访问的会是哪个站点呢?
在nginx中,每个站点都是由一个server段定义的,里面设定了监听的ip和端口,站点的域名,根目录等。

解决方法:
在Listen ip:port; 这个指令行中,有一个参数default,指定了它后,这个server段就会是这个ip的默认站点;如果没有这个参数,那么默认ip直接访问的是nginx.conf中出现的第一个server段对应的站点。
 

代码如下:
server{
    listen: 127.0.0.1:80 default;
    server_name shuai.be;
    ...
}

您可能感兴趣的文章:
nginx下禁止直接以IP访问的方法
两个nginx小技巧(禁止以ip方式访问、禁止列出目录)
设置nginx禁止通过IP访问服务器的方法
nginx禁止IP访问及未绑定的域名跳转的配置方法
nginx屏蔽ip直接访问的方法
nginx禁止直接以IP访问网站的方法


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3