gpt4 book ai didi

ubuntu - 服务器设置 : Subdomain or different port for API and single or multiple ssl certificates for a docker, nginx、web 和 api 设置?

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:09 25 4
gpt4 key购买 nike

我正在为我的服务器使用digital oceanubuntu 15.10。我有三个 docker 容器:nginxweb(用于 angular 2 应用程序)和 rails 用于 rails API

我计划按如下方式设置 nginx 配置文件:

端口 443nginx 代理传递 到我的 web 应用程序。

之后我对如何允许外部访问 rails api 感到有点困惑?我应该让 rails api 可以通过 subdomain 访问吗?如果是的话,怎么做?还是我应该只使用与 web 应用程序相同的域,尽管使用不同的 port

下一个问题是我是否需要一个 ssl 证书 用于与 nginx 层连接的外部世界?还是我需要一个 ssl 证书 用于 web 应用程序 和一个 ssl 证书 用于 rails api

最佳答案

您可以使用 nginx 作为两个端点的负载平衡器。这样的事情应该没问题:

upstream web {
server webcontainer1:8080;
server webcontainer2:8080;
}

upstream api {
server apicontainer1:5000;
server apicontainer2:5000;
}

server {
<your_server_directives>
...

location /api {
proxy_pass http://api;
}

location / {
proxy_pass http://web;
}
}

你也可以用单独的 nginx 做一个子域。在那种情况下,您将设置另一个 server 指令并在同一端口或另一个 API 特定端口上进行虚拟托管,例如:

upstream api {
server apicontainer1:5000;
server apicontainer2:5000;
}

server {
listen 5500;
server_name api.mydomain.com;

location /api {
proxy_pass http://api;
}
}

在第一种情况下,是的,您可以只使用一个 SSL 证书,因为 API 和 Web 将在一个端口(一个域名)上。在第二种情况下,您需要一个通配符证书或两个证书,一个用于您的主网站 (yourdomain.com) 和一个用于 api (api.yourdomain.com)。

还值得注意的是,第二种情况可能会遇到恼人的 CSRF 问题,因为 SSL 页面通常不允许当前域之外的 XHR 请求。因此,您可以为 API 创建第二个子域,但您最终可能需要在 nginx 配置中使用第三个代理来将 yourdomain.com/api 代理到 api.yourdomain.com.

关于ubuntu - 服务器设置 : Subdomain or different port for API and single or multiple ssl certificates for a docker, nginx、web 和 api 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com