我正在开发一个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配置(