首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Docker中托管的API启用HTTPs

如何为Docker中托管的API启用HTTPs
EN

Stack Overflow用户
提问于 2021-05-29 04:26:21
回答 4查看 75关注 0票数 0

我有一个用C#编写的应用程序接口,托管在DOCKER Container中。可以通过调用http://server:port/api访问它。我想为HTTPS启用它。我应该在哪里进行更改?在码头?在IIS中?我需要证书吗?

抱歉,我对HTTPs和Docker非常陌生。

EN

回答 4

Stack Overflow用户

发布于 2021-05-29 04:29:21

不要使用您的托管环境或应用层来实现https。使用反向代理通过http协议实现对应用层的HTTPS和代理请求。它增加了容器化应用程序的可移植性/单一责任/(可能是性能)。

一些用于https实现的有用的反向代理:

  • Nginx
  • Envoy
  • Apache反向代理
票数 4
EN

Stack Overflow用户

发布于 2021-05-29 04:58:41

您应该使用Nginx或Apache在反向代理的较高层P.E中实现它。或者,如果您正在云环境中部署,您可以使用应用程序负载均衡器,并将证书直接应用于它。

例如,如果您使用NGinx,您甚至可以将其部署为Docker容器,该容器将接收所有请求,然后根据URL模式将它们重定向到特定的容器。

P.E

  • /api -> API Docker容器
  • / ->您的前端容器(客户端)
  • /auth ->身份验证应用程序容器(例如,Keycloak)

一个NGINX配置文件可以让你这样做。

代码语言:javascript
复制
user  nginx;
worker_processes  1;

events {
   worker_connections  1024;
}

http {
include       /etc/nginx/mime.types;
default_type  text/html;


upstream client{
    server frontend:4200;
}

upstream api{
   server backend:80;
}

upstream auth{
    server auth:80 ;
}


server {
    listen 443;
    ssl_certificate    <your cert path>; 
    ssl_certificate_key    <your cert key>;

    location / {
        proxy_pass http://client;
    }


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

    location ~ ^/auth { 

        proxy_pass http://auth;

        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

  }

}

您在上游部分提供的名称将是引用您的特定容器的名称。

票数 1
EN

Stack Overflow用户

发布于 2021-05-29 04:44:15

如果您使用的是IIS,只需执行以下步骤:

  1. 打开IIS管理器
  2. 在右侧菜单中单击您的应用程序
  3. (操作)单击Bindings
  4. 类型: https并使用您以前定义的端口。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67745094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档