我正在开发一个应该部署在 LAN 中的 nextjs 应用程序,并且服务器未连接到互联网。所以我遇到的问题是在 backoffice
中我有一些表格给 add/update/delete
员工信息。还有由于某些原因生成的图像配置文件和二维码。我将这些图像存储在 users_images
中next.js public folder
内的文件夹.在开发中一切正常,我可以为这些静态文件(图像)提供服务。但是当我执行 next build
并运行应用程序进行生产,只有 users_images
中的图像构建时间被服务器化,但在后台创建的新闻 Assets 没有被提供,服务器返回 404
.我已经阅读了 nextjs 文档,这是预期的行为:Static File Serving .
由于应用程序将部署在离线服务器中,我无法使用类似 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 配置,它只提供静态文件(公共(public)文件夹,_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-configuration ) 的示例配置
关于nginx - 在构建时间问题后从公共(public)文件夹提供 next.js 静态 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64422252/