Nginx 的 default_server 指令

红薯 发布于 2010/01/01 23:08
阅读 37K+
收藏 4
server {
listen 80 default_server;
server_name oschina.net www.oschina.net;
...
}

先看看上面这段配置,listen 指令后面有一个参数 default_server ,这个参数是在 0.8.21 版本以后才有的,而之前是 default 指令。

Nginx 的虚拟主机是通过HTTP请求中的Host值来找到对应的虚拟主机配置,如果找不到呢?那 Nginx 就会将请求送到指定了 default_server 的 节点来处理,如果没有指定为 default_server 的话,就跑到 localhost 的节点,如果没有 localhost 的节点,那只好 404 了。

另外你也可以指定对于没有匹配的 Host 值时,返回错误到客户端,这在现在国内用来处理未备案域名指向自己时非常有用,看看下面的配置:

server {
listen 80 default_server;
server_name _;
return 444;
}

通过返回444这个Nginx的非标准错误码来让Nginx断开与浏览器之间的连接。

加载中
0
j
jingang1

请教如何防止用ip访问https的配置。我在配置完 80 default_server;后再配置

server {
        listen  443 default_server;
        server_name _;
        #rewrite ^(.*) https://www.xxxx.com$request_uri?;
        return       444;
    }

浏览器在访问https时收到如下错误:

SSL 接收到一个超出最大准许长度的记录。 (错误码: ssl_error_rx_record_too_long)

书三生
书三生
server { listen 80 default_server; listen 443 ssl; server_name _; if ($http_host !~ "^www.cncounter.com$") { rewrite ^(.*) $scheme://www.cncounter.com$1 permanent; } }
0
0xtuhao
444换成403,结果怎样?
0
ercom
ercom
该评论暂时无法显示,详情咨询 QQ 群:点此入群
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部