构建是完美的工作在我的本地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构建将部署在这个服务器上和它在我的本地机器上没有什么不同。在我的本地机器上它是美丽的!
1条答案
按热度按时间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)上模仿相同的操作,这肯定会给予你一些线索。
最后一点,不要惊慌。😃