我的 nginx.conf 中有多个“服务器”块。关于 server_name 匹配发生顺序的文档似乎有误。
我的 conf 看起来像:
server {
listen 80
server_name domain.com *.domain.com
# do stuff
}
server {
listen 80
server_name sub.domain.com *.sub.domain.com
# do something else
}
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚为什么当文档表明它应该转到第一台服务器时,为什么带有 host = www.sub.domain.com 的请求会转到正确的位置(第二台服务器)。
Nginx 文档表明服务器块是“按顺序”检查匹配的,这意味着任何对主机 *.sub.domain.com 的请求都应该被第一台服务器捕获,而不是第二台服务器。( http://wiki.nginx.org/HttpCoreModule#server_name )
此外,* 通配符匹配任意数量的子域部分,因此 *.domain.com 匹配 www.sub.domain.com。(http://nginx.org/en/docs/http/server_names.html#wildcard_names)
如果此文档有误,实际匹配顺序是什么?
这里的这个页面比较了 nginx 和 lighttpd:
http://www.wikivs.com/wiki/Lighttpd_vs_nginx
有许多关于多年来未修复的内存泄漏以及严重恶化的 CPU 消耗的报告(nginx 为 2%,而 lighttpd 为 98%)。
现在的稳定版还存在这些问题吗?(显然是来自官网的1.4.28)