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