Nginx没有在反向代理中缓存静态资产

时间:2018-09-04 14:28:52

标签: nginx

我正在尝试在node(express)服务器之上实现proxy_cache,并想缓存响应。

以下代码在缓存api方面做得很好,但是并没有缓存静态资产。

静态资产是从下游服务(微服务)提供的,因此我在这里提到的public文件夹仅用于POC(使用express.static模块)。

如何在Nginx中也缓存静态资产?

Nginx配置:

server {
    listen       80;
    location / {
        proxy_cache mycache;
        proxy_cache_lock on;
        proxy_cache_valid 60m;
        proxy_cache_use_stale updating;
        proxy_pass http://localhost:8085;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
    }
}
proxy_cache_path /tmp/cache keys_zone=mycache:10m levels=1:2 max_size=100m inactive=60m;

节点服务器:

const express = require('express')
const app = express()
const morgan = require('morgan')

app.enable('trust proxy')
app.use(morgan("short"))
app.use(express.static('src/public'))

app.get('/test', (req, res, next) => {
    return res.json({
        message: 'ok'
    })
})

app.listen(8085)

1 个答案:

答案 0 :(得分:0)

您可以使用以下Nginx配置轻松解决此问题。

Nginx配置

server {
 listen       80;
 listen       [::]:80;
 server_name  my-site.com;
 location / {
    proxy_pass "http://localhost:3000";
 }

 location /public {
    root /PATH_TO_YOUR_NODE_APP_PUBLIC_DIRECTORY
    expires 30d;
 }
}

在您的快速应用中,.html文件使用/ public前缀访问这些静态文件。示例:“ http://sample.com/public/app.css