如何在Azure DevOps Linux服务器配置Next.js应用以80端口运行适配NGINX
配置Next.js应用适配NGINX(80端口访问)分步流程
1. 调整Next.js应用端口(推荐保留3000端口,通过NGINX反向代理)
Next.js默认用3000端口运行,直接用root权限跑80端口存在安全风险,更推荐保留3000端口,通过NGINX转发80端口请求。若你执意要直接用80端口启动:
- 启动时指定端口:
sudo next start -p 80 - 或修改项目根目录
package.json的启动脚本:"scripts": { "start": "next start -p 80" }
2. 配置NGINX反向代理
步骤1:安装NGINX(未安装时执行)
sudo apt update && sudo apt install nginx -y
步骤2:创建Next.js应用的NGINX配置文件
sudo nano /etc/nginx/sites-available/nextjs-app
粘贴以下配置(将your-server-ip替换为服务器公网IP或你的域名):
server { listen 80; server_name your-server-ip; location / { proxy_pass http://localhost:3000; 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; } }
步骤3:启用配置并验证
- 建立配置文件软链接:
sudo ln -s /etc/nginx/sites-available/nextjs-app /etc/nginx/sites-enabled/ - 检查配置合法性:
sudo nginx -t - 重启NGINX生效:
sudo systemctl restart nginx
3. 设置Next.js应用开机自启
用systemd服务保证服务器重启后应用自动运行:
步骤1:创建systemd服务文件
sudo nano /etc/systemd/system/nextjs-app.service
粘贴以下内容(替换/path/to/nextjs-project为你的项目根目录,your-username为服务器普通用户名):
[Unit] Description=Next.js Production Application After=network.target [Service] Type=simple User=your-username WorkingDirectory=/path/to/nextjs-project ExecStart=/usr/bin/npm start Restart=always Environment=NODE_ENV=production [Install] WantedBy=multi-user.target
步骤2:启动并启用服务
sudo systemctl daemon-reload sudo systemctl start nextjs-app sudo systemctl enable nextjs-app
- 检查服务状态:
sudo systemctl status nextjs-app
4. 验证配置效果
- 打开浏览器访问
http://your-server-ip,确认Next.js应用正常加载 - 检查端口监听情况:
应能看到NGINX监听80端口,Next.js监听3000端口sudo netstat -tulpn | grep -E ":80|:3000"
内容的提问来源于stack exchange,提问作者Hasan Mehmood
相关产品推荐
相关产品推荐

