[英]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.