我在路由到node.js的nginx前面的EC2上运行varnish。
我想要的是通过nginx从某些路由(如index.html的/ )提供特定的静态超文本标记语言页面,但让所有其他路由由node.js处理。
例如,/将由nginx以静态HTML页面的形式发送,而任何不匹配的内容,比如/dynamic_stuff或/dynamic_stuff2,都将由node.js处理。
在其他在线线程中,其他人将node.js完全放在一个单独的目录中,比如/node/dynamic_stuff,但我不想为我的路由设置一个单独的目录。
现在我有node.js提供的/,就像其他所有东西一样,但如果我只是测试我的node.js服务器并关闭它,我希望/回退到index.html的nginx版本。在这种情况下,如果我的node.js服务器关闭,那么我会得到502Bad 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,包括/。
发布于 2013-03-01 05:26:36
我认为如果仅仅是index.html,最简单的做法就是将索引设置为
index index.html
root /path/to/public您的公共目录中的所有文件现在都应该由nginx提供。
现在将此index.html放入您的节点应用程序的公共目录中。其余部分将从nginx代理到节点实例。
当然,如果您愿意,您可以简单地将其他静态html放入子目录中:
public/about(index.html
public/faq/index.html
...https://stackoverflow.com/questions/15142692
复制相似问题