NextJS 500内部服务器错误在部署的网站.但构建工作完美地在本地

dwbf0jvd  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(432)

构建是完美的工作在我的本地PC与pm2,没有错误。每个页面加载完美,没有404或500错误在获取文件。这是伟大的!这正是我想要它如何运行。
但是当我尝试在Ubuntu上部署pm2时,我得到了两组错误:
我把截图放这里:
https://i.imgur.com/IdnEH7r.png
书面形式:

Script_app-a44cfb7405f734c3.js

 Script_buildManifest.js

 Script_ssgManifest.js

 Script_middlewareManifest.js

(And其他)都给我一个500内部服务器错误,无论我做什么。

尝试的解决方案

我尝试了许多方法,当我导航到我部署的网站时,所有这些方法都以这个错误/失败结束。

  • 使用filezilla手动上传。
  • Git从我的仓库克隆,在服务器上构建(没有构建错误),然后用pm2部署。pm2也没有错误!但是我得到了404/500个错误。

我在不同的文件夹里试过了,我用了很多不同的命令,我完全没有主意了,我上传了我的文件,安装了软件包等等。

Nginx错误?

这可能是nginx错误?但nginx设置工作完美的一个全新的“npx create-next-app@latest”按照这个确切的教程信:https://www.youtube.com/watch?v=x6ci2iCckWc&t=658s&ab_channel=DigitalCEO
我的nginx文件

"server {
        server_name specialservername.com;

        gzip on;
        gzip_proxied any;
        gzip_types application/javascript application/x-javascript text/css text/javascript;
        gzip_comp_level 5;
        gzip_buffers 16 8k;
        gzip_min_length 256;

        location /_next/static/ {
                alias /var/www/frontend/.next/static/;
                expires 365d;
                access_log off;
        }

#EDITS
   location ~ ^/_next/static/(.*)$ {
      root /.next;
      try_files "/static/$1" "/server/static/o$1" @proxy_pass;
   }

#END EDITS

        location / {
                proxy_pass http://127.0.0.1:3000; #change to 3001 for second app, but make sure second nextjs app starts on new port in packages.json "start": "next start -p 3001",
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
                add_header Access-Control-Allow-Origin *;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/specialservername.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/specialservername.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host =specialservername.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        server_name specialservername.com;
    return 404; # managed by Certbot

}"

∮我所期待的∮
NextJS构建将部署在这个服务器上和它在我的本地机器上没有什么不同。在我的本地机器上它是美丽的!

t1rydlwq

t1rydlwq1#

如果您在使用nginx访问Ubuntu上的Next.js应用程序时看到“Internal Server Error”(内部服务器错误),很可能是您的配置有问题。
以下是您可以尝试的几种方法:
检查您的nginx错误日志:查看nginx错误日志(通常位于/var/log/nginx/error. log),查找任何可能指示问题原因的错误消息。
检查您的Next.js日志:您还应该检查Next.js日志(通常位于应用程序的.next目录中),查看是否有任何错误消息可能指出问题的原因。
检查您的Next.js配置:确保为生产部署正确设置了Next.js配置。应确保next.config.js文件具有生产部署所需的设置,例如设置目标:“server”,配置生成选项,并设置资源前缀(如有必要)。
检查环境变量:确保应用程序所依赖的任何环境变量在Ubuntu服务器上设置正确。
检查权限:确保服务器上的文件、生成文件具有足够的权限。
此外,如果上面的一切都工作正常,那么尝试用nginx停靠你的应用程序并在本地运行,然后简单地在服务器(ubuntu)上模仿相同的操作,这肯定会给予你一些线索。
最后一点,不要惊慌。😃

相关问题