我在 nginx 前面的 EC2 上运行 varnish,它路由到 node.js。
我想要的是通过 nginx 从某些路由(例如/
for index.html
)提供特定的静态 HTML 页面,但所有其他路由都由 node.js 处理。
例如,/
将由 nginx 以静态 HTML 页面的形式发送,而任何不匹配的内容,例如/dynamic_stuff
or /dynamic_stuff2
,将由 node.js 处理。
在其他在线线程中,其他人将 node.js 完全放在单独的目录中,/node/dynamic_stuff
但我不想为我的路由设置单独的目录。
现在我已经/
像其他所有东西一样由 node.js 提供服务,但如果我只是测试我的 node.js 服务器并将其关闭,我想/
回退到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,包括/
.