nginx - 在构建时间问题后从公共(public)文件夹提供 next.js 静态 Assets

标签 nginx next.js

我正在开发一个应该部署在 LAN 中的 nextjs 应用程序,并且服务器未连接到互联网。所以我遇到的问题是在 backoffice 中我有一些表格给 add/update/delete员工信息。还有由于某些原因生成的图像配置文件和二维码。我将这些图像存储在 users_imagesnext.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/

相关文章:

reactjs - eager-slider 不适用于 next.js

reactjs - 如何防止父组件使用 React (next.js) SSR 两遍渲染重新渲染?

docker 通过 https 提供内容而没有域(仅具有公共(public) IP 地址)

php-fpm 访问日志应包含从 php 应用程序设置的自定义变量

ssl - NGINX 配置不将非 www 重定向到 www

python - 我添加了一个 ssl cer 并将 http 重定向到 https 但现在所有 url 都是 404

reactjs - 当 Context 中的状态发生变化时,组件不会立即重新渲染

javascript - 警告 : Expected server HTML to contain a matching nav in div

reactjs - 部署 Next.js 项目到 Heroku 失败

ruby-on-rails - 类别 :Class Mongoid Nginx Passenger 的未定义方法 `mount_uploader'