Nginx 配置用于服务器端渲染静态资产、节点请求处理程序和 index.html 回退

Nginx 配置用于服务器端渲染静态资产、节点请求处理程序和 index.html 回退

我想提供一个使用 webpack 构建的应用程序,因此可以始终以静态方式提供服务,但我想放置一个节点服务器(使用 JSDOM),它将为每个请求预渲染 HTML。节点服务器只应针对无法静态提供的请求进行访问,如果服务器被移除,则应将这些请求重定向到静态index.html

因此,nginx 应该按以下顺序执行以下操作:

  1. 提供所有资产文件(app.js、css 等)除了静态 index.html
  2. 将所有其他请求(/users、/products/ 等)代理到节点应用程序
  3. 如果上述代理失败,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;
  }
}

相关内容