【发布时间】:2013-02-28 18:16:56
【问题描述】:
我在 nginx 前面的 EC2 上运行 varnish,它路由到 node.js。
我想要的是通过 nginx 从某些路由(例如,/ for index.html)提供特定的静态 HTML 页面,但所有其他路由都由 node.js 处理。
例如,/ 将由 nginx 以静态 HTML 页面的形式发送,而任何不匹配的内容,例如 /dynamic_stuff 或 /dynamic_stuff2,将由 node.js 处理。
在其他在线线程中,其他人将 node.js 完全放在单独的目录中,例如 /node/dynamic_stuff,但我不想为我的路由设置单独的目录。
现在我有 / 像其他所有东西一样由 node.js 提供服务,但如果我只是测试我的 node.js 服务器并将其关闭,我希望 / 回退到 nginx 版本的index.html。在这种情况下,如果我的 node.js 服务器被关闭,那么我会得到一个 502 Bad Gateway。
我不太担心通过 nginx 与 node.js 提供文件的性能,我只是想,如果 node.js 出于某种原因出现故障,我想让 nginx 处理基本页面。
相关脚本:
location = / {
index index.html
root /path/to/public
try_files $uri $uri/ index.html;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass node_js;
}
如果我使用上面的代码,所有请求仍然会发送到 node.js,包括/。
【问题讨论】: