如何使用 Nginx 为多个 Meteor 实例做一个反向代理

How to do a reverse-proxy with Nginx for multiple instance of Meteor

问题

我正在尝试在一个服务器 Web 上部署 Meteor 的多个实例。

每个项目都有自己的域名(比如 'A' -> 'A.com'、'B' ..),但服务器只有一个网站 port:80。所以我想用 Nginx to follow this article

部署

我正在使用 meteor-up (version mupx) 来部署每个应用程序。这是 mup.json

的裁剪示例
{
  "appName": "A",
  "env": {
    "PORT": "3001",
    "ROOT_URL": "http://www.A.com"
  },
}

Nginx

这是我的版本 /etc/nginx/sites-available/A.com.conf

server {
  listen                *:80;

  server_name           A.com;

  access_log            /var/log/nginx/app.dev.access.log;
  error_log             /var/log/nginx/app.dev.error.log;

  location / {
    proxy_pass http://127.0.0.1:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header X-Forwarded-For $remote_addr;
  }
}

结果

对于每个域,当我调用时:

  :80   -> Ngninx Welcome page
  :3001 -> A.com
  :3002 -> B.com
 ..

如何在调用 whatever:80 时根据域名获得正确的站点?

所以解决方案是简单地添加服务器名称的所有可能版本,而不仅仅是域名。

像这样

/etc/nginx/sites-available/A.com.conf

server {
  listen                *:80;

  server_name           A A.com *.A.com;

  access_log            /var/log/nginx/app.dev.access.log;
  [...]