Nginx不在反向代理中缓存静态资产
我试图在节点(express)服务器上实现代理缓存,并希望缓存响应 下面的代码很好地缓存了api,但它不缓存静态资产 静态资产由下游服务(微服务)提供,因此我提到的Nginx不在反向代理中缓存静态资产,nginx,Nginx,我试图在节点(express)服务器上实现代理缓存,并希望缓存响应 下面的代码很好地缓存了api,但它不缓存静态资产 静态资产由下游服务(微服务)提供,因此我提到的public文件夹仅用于POC(使用express.static模块) 如何在nginx中缓存静态资产 Nginx配置: server { listen 80; location / { proxy_cache mycache; proxy_cache_lock on;
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)
您可以使用以下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;
}
}
在express app.html文件中,使用/public前缀访问这些静态文件。示例:''这有点胡乱猜测,但当您代理时,请求不会引用上游服务器(节点)的文件名。能否设置反向代理头并重试?它看起来应该是这样的:已经试过了(在发布问题之前),不起作用。我不明白如何设置头会是一个问题,我已经说过它只适用于静态资产。这不是我想要的,我会从一些下游服务(微服务)而不是文件夹中获取静态文件。此解决方案不适用于我的用例。我包含的公共目录仅用于poc。对不起,如果我之前没有在问题中提到,我现在就做。是这样吗。让我为你更改答案。