我想用我的 nginx 服务器提供任意域名。
这一点配置似乎工作得很好:
location / {
root /www/$http_host;
index index.html index.htm;
}
例如,为请求提供服务www.mydomain.com
将在/www/www.mydomain.com/
. 它有效,看起来很完美。
但是我不确定这是否安全。这会允许任何类型的目录遍历或其他安全问题吗?nginx 对 $http_host 进行了哪些验证?
正如jordanm所说,未验证可能会导致客户端从
/www
目录中转义并访问任何文件。幸运的是,主机名已经过验证(参见源代码),并且使用两个连续
..
的点或路径分隔符之类的技巧/
将不起作用:nginx将返回400 Bad Header
. 验证可能更严格并且只允许有效的 DNS 标签,但这是个人喜好。尽管如此,通过这样的配置,你不能在
/www
目录中放置任何私有的东西,所以我宁愿使用: