首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义停靠窗口容器的反向代理?

问如何定义停靠窗口容器的反向代理?
EN

Stack Overflow用户
提问于 2017-03-15 22:28:04
回答 2查看 6.3K关注 0票数 9

我正在windows 10周年版上运行一个停靠窗口容器,并希望将IIS设置为容器的反向代理。根据https://blogs.technet.microsoft.com/virtualization/2016/05/25/windows-nat-winnat-capabilities-and-limitations/,这似乎表明这是不可能的,因为不可能使用本地主机引用内部NAT范围。它留下了一个动态分配的IP地址,只有在运行映像后才能通过运行码头检查命令才能发现该地址。我希望有一个更有效的方式,我正在忽视。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-23 18:30:40

我们通过将默认子网上的IP地址分配给每个Windows容器并从容器中导出端口80来解决这个问题。这给了我们一个稳定的地址,可以放入ARR反向代理规则。例如,以下代码在地址172.20.118.129处创建一个容器,然后验证容器是否运行在请求的地址上。

代码语言:javascript
复制
PS C:\WINDOWS\system32> docker run -d --name myservice --ip=172.20.118.129 microsoft/iis:nanoserver
7d20d8a131805727868ddf85f7c1f455fa2489bb2607b250e694a9e530a61302
PS C:\WINDOWS\system32> docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" myservice
172.20.118.129
票数 3
EN

Stack Overflow用户

发布于 2017-10-05 15:34:31

我们还在容器上使用了一个固定的ip地址,但是我们使用另一个带有nginx的容器来执行反向代理。我们的想法是,在我们的容器主机(Windows 2016)上,我们只安装Docker,而不安装其他任何东西。所有配置都是在容器中完成的。这样,我们就可以很容易地迁移到另一个主机。

这是nginx代理的Dockerfile

代码语言:javascript
复制
FROM microsoft/windowsservercore

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

ARG NgInxVersion="1.13.5"
ENV NgInxZipUrl="http://nginx.org/download/nginx-${NgInxVersion}.zip"

RUN Invoke-WebRequest -Uri $env:NgInxZipUrl -UseBasicParsing -Outfile c:\\nginx.zip
RUN Expand-Archive -Path c:\\nginx.zip -DestinationPath c:\\nginx

WORKDIR "c:\\nginx\\nginx-${NgInxVersion}"

COPY ./nginx.conf conf\\nginx.conf

ENTRYPOINT powershell .\\nginx.exe

注意,nginx.conf被复制到nginx配置文件夹中。它包含反向代理设置。从我们的一个站点的http节点中提取:

代码语言:javascript
复制
server {
    listen       80;
    server_name  somesite.mydomain.com;

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

nginx容器应该与-p 80:80一起运行

当我们添加新的容器时,我们运行一个powershell脚本来更新nginx.conf并重新加载nginx。(这将是罕见的)

示例:

  1. 用户浏览http://somesite.mydomain.com
  2. 我们的DNS将somesite.mydomain.com重定向到容器主机的ip
  3. 因为端口80是向nginx容器公开的,所以请求就在那里。
  4. nginx将代理请求到172.22.108.6
  5. 用户看到在带有ip 172.22.108.6的容器上运行的网页。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42821898

复制
相关文章

相似问题

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