繁体   English   中英

清漆,nginx和node.js:具有node.js后备功能的静态nginx html页面

[英]varnish, nginx, & node.js: static nginx html pages with node.js fallback

我在Nginx前面的EC2上运行清漆,该清漆路由到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 vs.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,包括/

我认为如果只是index.html,最简单的方法是将index设置为

index index.html
root /path/to/public

现在,应该从nginx提供公共目录中的所有文件。

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

当然,您可以根据需要将其他静态html放在子目录中:

public/about(index.html
public/faq/index.html
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM