因此,当我指向 nginx conf 中的 node.js 应用程序时,我正在设置一个虚拟路径。相关部分如下所示:
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
效果很好,除了当我的 node.js 应用程序(一个快速应用程序)调用重定向时。
例如,开发箱在端口 8080 上运行 nginx,因此节点应用程序根目录的 url 如下所示:
当我从节点调用重定向到“/app”时,实际的重定向会转到:
从我自己的答案来看,我必须替换$host为$http_host才能解决我的问题......
但这安全吗?
似乎$http_host所做的一切都是从标头中暴露整个内容HOST。这里的解释对我来说仍然不清楚......
有谁知道为什么会$http_host更危险?
编辑
实际上,这是我的第三次编辑......读完后我应该重新考虑我的立场: https ://stackoverflow.com/questions/1459739/php-serverhttp-host-vs-serverserver-name-am-i-understanding -the-ma
我不确定 nginx 对此有何反应,但是你们认为 nginx 是否也符合 Chris 的测试结果,即两者都不安全?
什么情况下,使用$http_host时你能想到利用的办法吗?此外,为什么删除端口号很重要?
我知道有可能破坏网络,并发送一些信息Host: fake or old ip,然后在我在其他地方读到时执行重新绑定攻击?
nginx ×2