我正在尝试在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)
答案 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”