将 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 端口。
现在,您可以研究反向代理并可能想出您自己的规则。
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 端口。
现在,您可以研究反向代理并可能想出您自己的规则。