生成时间问题后,从公用文件夹中提供next.js静态资产



我正在开发一个nextjs应用程序,该应用程序应该部署在局域网中,而服务器没有连接到互联网。所以我的问题是,在backoffice中,我有一些add/update/delete员工信息的表格。也有由于某些原因而生成的图像配置文件和QRCode。我将这些图像存储在next.js public folder中的users_images文件夹中。在开发过程中,一切都很好,我可以为那些静态文件(图像(提供服务器。但当我执行next build并运行应用程序进行生产时,只有users_images中的图像是构建时服务器,但后台创建的新闻资产没有得到服务,服务器返回404。我已经阅读了nextjs文档,这就是预期的行为:静态文件服务。

由于应用程序将部署在脱机服务器中,因此我不能使用AWS s3之类的服务或cloudinary之类的服务来存储和检索图像。你对如何解决这个问题有什么想法吗?即使在build之后,你也能帮助我提供这些文件吗?

我也尝试过用nginx为它们提供服务,图像是可以访问的,但我在访问页面时得到了505。这是我的nginx configuration

port 3000上的下一个应用程序侦听

server{
listen 3000;
root /path_to_apps_public_folder;
location /{
try_files $uri $uri/ =404;
} 
} 

现在我知道你在生产中运行Next.js服务器,而不是构建静态文件,并作为客户端渲染应用程序运行。

看看你的nginx配置,它只提供静态文件(公共文件夹,_next文件夹(,你应该在next.js服务器上添加一个proxy_pass来处理其他请求(页面请求,api路由…(

我很少使用nginx的root,因为我知道Next.js只有两个静态文件夹:public的子文件夹(通常是"static",放在public/static(和_next

server{
listen 3000;


location ^~ /static/ {
alias /usr/src/app/public/static/;
sendfile           on;
sendfile_max_chunk 1m;
}
location ^~ /_next/ {
alias /usr/src/app/_next/;
sendfile           on;
sendfile_max_chunk 1m;
}
location / {
proxy_pass      http://<host_to_next_js>:<port>;
}
} 

您可以四处搜索Nginx+Next.js的示例配置(https://steveholgado.com/nginx-for-nextjs/#final-nginx配置(

最新更新