我想提供一个使用 webpack 构建的应用程序,因此可以始终以静态方式提供服务,但我想放置一个节点服务器(使用 JSDOM),它将为每个请求预渲染 HTML。节点服务器只应针对无法静态提供的请求进行访问,如果服务器被移除,则应将这些请求重定向到静态index.html
因此,nginx 应该按以下顺序执行以下操作:
- 提供所有资产文件(app.js、css 等)除了静态 index.html
- 将所有其他请求(/users、/products/ 等)代理到节点应用程序
- 如果上述代理失败,
index.js
则为所有这些请求提供服务
答案1
我目前正在使用这个,似乎有效
server {
root /my-app;
location / {
try_files $uri @node;
}
location @node {
proxy_pass http://localhost:8000;
error_page 502 = @static;
}
location @static {
try_files $uri /index.html $uri;
}
}