![Nginx 配置用于服务器端渲染静态资产、节点请求处理程序和 index.html 回退](https://linux22.com/image/703818/Nginx%20%E9%85%8D%E7%BD%AE%E7%94%A8%E4%BA%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%B8%B2%E6%9F%93%E9%9D%99%E6%80%81%E8%B5%84%E4%BA%A7%E3%80%81%E8%8A%82%E7%82%B9%E8%AF%B7%E6%B1%82%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E5%92%8C%20index.html%20%E5%9B%9E%E9%80%80.png)
我想提供一个使用 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;
}
}