首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js:带有node.js回退的静态nginx html页面

node.js:带有node.js回退的静态nginx html页面
EN

Stack Overflow用户
提问于 2013-03-01 02:16:56
回答 1查看 815关注 0票数 0

我在路由到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来处理基本页面。

相关脚本:

代码语言:javascript
复制
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,包括/

EN

回答 1

Stack Overflow用户

发布于 2013-03-01 05:26:36

我认为如果仅仅是index.html,最简单的做法就是将索引设置为

代码语言:javascript
复制
index index.html
root /path/to/public

您的公共目录中的所有文件现在都应该由nginx提供。

现在将此index.html放入您的节点应用程序的公共目录中。其余部分将从nginx代理到节点实例。

当然,如果您愿意,您可以简单地将其他静态html放入子目录中:

代码语言:javascript
复制
public/about(index.html
public/faq/index.html
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15142692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档