将 Node.js 和 Django 部署到相同的 domain/server

deploying Node.js and Django to same domain/server

Objective:给我的 Django 应用程序(Python 后端 [已写] 和 react/redux/js 前端 [已写])一个 Smartsheet API OAuth 页面将用户重定向主网站直到身份验证完成,然后返回网站(在功能中使用 Smartsheet API)

Crux:直觉说 OAuth 应该在 node.js 中以更匹配前端,我找到了一个工作示例代码,说明如何在 Node.js 中执行 Smartsheet OAuth。它本身效果很好!然后,当我尝试将这个 node.js 页面集成到 Django 中时,我从我设置第二个服务器的服务器中得到了错误,即在给定的 (12.0.0.1:{port}) local [=37] 上已经有一个服务器=].也许 OAuth 应该改用 python 来编写,但是我找不到它的示例代码,所以如果我能将它保留在 Node.

中就好了。

问题 - 有没有办法将组件从 Node 和 Django 部署到同一个 server/domain?让用户去一个站点,完成他们的 oauth,只是被推送到一个完全独立的域,这很奇怪。这也可能带来安全风险。

我的尝试- 我想我会创建一个简单的登录页面,然后在登录后,让用户在网站上前进(在重定向 url 上)。这就是 Django urls.py 的样子:

from django.urls import path
from . import views


urlpatterns = [
    path('', views.oauth ), //Views.oauth is fairy blank, and I wanted my Node.JS server
                            //to listen at that hostname:port
    path('loggedin/', views.index ), //when oauth ended, I wanted it to send the user here
]

这次尝试犯了这些错误: Django Error Node Error

感谢您对我的询问有任何想法!

微服务基本上是通过 REST 或任何类型的 api 以及您所说的 IS 微服务架构相互连接的小组件。

现在,您可以在某个端口部署 Django,比如说 8090,在另一个端口部署 NodeJS,比如 8080.

现在,要连接它们,您需要某种反向代理,最简单的就是 nginx。

所以,规则是这样的。

如果 url 是 host/api 将流量转发到 NodeJS 127.0.0.1:8080 端口。 否则将流量转发到 127.0.0.1:8090.

例如这个问题:

server {
{
    listen 443;
    server_name localhost;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;

    location /api/orders {
        proxy_pass https://localhost:5000;
    }
    location /api/customers {
        proxy_pass https://localhost:4000;
    }
}

所以规则说,如果位置是 /api/orders,则转到 localhost:5000,如果是 /api/customers,则转到另一个,即 4000 端口。

现在,您可以研究反​​向代理并可能想出您自己的规则。