nginx:使用 $http_host 作为服务器根目录安全吗?

nginx:使用 $http_host 作为服务器根目录安全吗?

我想用我的 nginx 服务器提供任意域名服务。

这点配置似乎工作得很好:

    location / {
        root   /www/$http_host;
        index  index.html index.htm;
    }

例如,处理 的请求时,www.mydomain.com会查找 中的文件/www/www.mydomain.com/。它起作用了,看起来很完美。

但是我不确定这是否安全。这是否会导致任何类型的目录遍历或其他安全问题?nginx 对 $http_host 进行了哪些验证?

答案1

正如乔丹未经验证可能会导致客户端逃离/www目录并访问任何文件。

幸运的是主机名已验证(参见源代码) 并且使用两个连续的点..或路径分隔符等技巧/将不起作用:nginx将返回400 Bad Header。验证可能更严格,并且只允许有效的 DNS 标签,但这是个人品味。

然而,在这样的配置下,您不能在/www目录中放置任何私有内容,因此我宁愿使用:

root /www/$http_host/html

相关内容