You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Nginx反向代理的Remix.js SSR应用部署疑问

Remix.js 部署到 Digital Ocean Droplet(Remix App Server + Nginx)

问题核心

只传build/和public/build/无法运行remix-serve,是因为缺少生产依赖包和启动所需配置文件——remix-serve本身是需要安装的依赖,同时构建产物可能依赖你项目里的第三方包。


两种可行部署方式

方式一:本地构建后传必要文件到服务器(推荐,减少服务器资源消耗)

  1. 本地准备部署文件
    • 执行remix build生成build/和public/build/目录
    • 复制项目根目录的package.json和package-lock.json(或yarn.lock),注意:
      • 确保remix-serve在package.json的dependencies里(如果之前装在devDependencies,执行npm install remix-serve --save移到生产依赖)
  2. 服务器端操作
    • 把上述文件传到服务器的部署目录(比如/var/www/remix-app)
    • 安装生产依赖:npm install --production(只装运行必需的包,速度更快)
  3. 启动服务
    • 直接运行:npx remix-serve build
    • 更规范的方式是在package.json里加启动脚本:
      "scripts": {
        "start": "remix-serve build"
      }
      
      然后执行npm start
    • 用PM2管理进程(防止终端关闭后服务停止):
      • 安装PM2:npm install -g pm2
      • 启动服务:pm2 start npm --name "remix-app" -- start
      • 查看状态:pm2 status
      • 设置开机自启:执行pm2 startup,按照提示完成配置

方式二:服务器上克隆项目直接构建(适合频繁迭代场景)

  1. 服务器环境准备:安装Git、Node.js(版本和本地开发环境一致)
  2. 克隆并构建
    • 克隆项目:git clone <你的仓库地址>
    • 进入项目目录:cd <项目名称>
    • 安装所有依赖:npm install
    • 构建项目:remix build
  3. 启动服务:同样用PM2管理,执行pm2 start npm --name "remix-app" -- start

Nginx反向代理补充配置

确保Nginx正确转发动态请求到Remix App Server,同时直接处理静态资源:
编辑Nginx站点配置文件(比如/etc/nginx/sites-available/your-domain.conf):

server {
  listen 443 ssl;
  server_name your-domain.com;

  # Let's Encrypt 证书配置
  ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

  # 静态资源由Nginx直接处理,提升性能
  location /public/build/ {
    root /var/www/remix-app;
    expires 1y;
    add_header Cache-Control "public, immutable";
  }

  # 动态请求转发到Remix App Server(默认端口3000)
  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

# HTTP自动重定向到HTTPS
server {
  listen 80;
  server_name your-domain.com;
  return 301 https://$host$request_uri;
}
  • 测试配置有效性:nginx -t
  • 重启Nginx生效:systemctl restart nginx

内容的提问来源于stack exchange,提问作者Dylan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:03:34