加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

node.js – 使用nginx处理Express子域

发布时间:2020-12-13 21:06:03 所属栏目:Nginx 来源:网络整理
导读:我想知道我如何处理基于Expressjs的项目中的子域名. 这是我的nginx配置 server { listen 80; server_name bee.local; access_log /var/log/nginx/bee.local.access.log; error_log /var/log/nginx/bee.local.error.log; location / { proxy_pass http://127.

我想知道我如何处理基于Expressjs的项目中的子域名.

这是我的nginx配置

server {
  listen 80;
  server_name           bee.local;

  access_log            /var/log/nginx/bee.local.access.log;
  error_log             /var/log/nginx/bee.local.error.log;

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

server {
  listen 80;
  server_name           api.bee.local;

  access_log            /var/log/nginx/bee.local.access.log;
  error_log             /var/log/nginx/bee.local.error.log;

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

这是我的子域支持路由器

router.get('/v1/',function(req,res,next) {
    res.status(200).json({ title: "title" });
});



app.use(subdomain('api',router));

问题是它正在呈现索引路由

并且肯定我设置了hosts文件

我一直在寻找3小时你能帮我:)

最佳答案
有几个要求:

>在nginx中使用必需的域或代理设置主机头(如果适用)
>在处理端点的其他中间件之前使用子域中间件

工作示例:

nginx配置:

server {
    listen       80;
    server_name  bee.local;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen       80;
    server_name  api.bee.local;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

具有硬编码主机头值的nginx配置:

我相信你没有正确设置主机头.请尝试下一个配置

server {
    listen       80;
    server_name  bee.local;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
#        proxy_set_header Host      $host;
        proxy_set_header Host      bee.local;
    }
}

server {
    listen       80;
    server_name  api.bee.local;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
#        proxy_set_header Host      $host;
        proxy_set_header Host      api.bee.local;
    }
}

快递应用:

var subdomain = require('express-subdomain');
var express = require('express');
var app = express();

var router = express.Router();

router.get('/',res) {
  res.send('Welcome to our API!');
});

router.get('/users',res) {
  res.json([
    { name: "Brian" }
  ]);
});

app.use(subdomain('api',router));

app.get('/',res) {
  res.send('Homepage');
});

app.listen(3000);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读