首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于主机名的IIS子域反向代理

基于主机名的IIS子域反向代理
EN

Server Fault用户
提问于 2016-05-01 05:28:05
回答 2查看 3.8K关注 0票数 2

我在azure中有一个虚拟机,在三个不同的端口上运行三个自托管应用程序(不托管在IIS中)。

我可以在以下网址访问它们:

  • my-server.cloudapp.azure.com:8080
  • my-server.cloudapp.azure.com:8081
  • my-server.cloudapp.azure.com:8082

我购买了一个域名(my-server.company.com),并希望创建指向每个应用程序的三个子域

  • application-1.my-server.company.com
  • application-2.my-server.company.com
  • application-3.my-server.company.com

我的第一个想法是在虚拟机上安装IIS,并在本文(http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis)中提到的默认网站上使用URL重写设置反向代理。

因此,在这个场景中,我将为每个子域设置CNAME记录,以指向my-server.cloudapp.azure.com:80,然后配置反向代理,根据主机头将反向代理转发到不同的端口(808080818082)。

这是解决这件事的最好办法吗?

第二个问题是,一旦我完成这项工作,如何添加ssl?

每个子域是否需要自己的ssl证书,在这种情况下,如何使用上面的设置(没有iis网站绑定每个证书)。或者,我可以为我的-server.company.com使用一个证书,然后在反向代理中卸载吗?

终解

我创建了CNAME dns记录如下:

代码语言:javascript
复制
CNAME | application-1 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com

然后,在蔚蓝vm上运行卡迪 (具有自动HTTPS的HTTP/2 web服务器),并使用以下Caddyfile:

代码语言:javascript
复制
application-1.my-server.company.com {
    proxy / localhost:8080 {
        proxy_header Host {host}
    }
}

application-1.my-server.company.com {
    proxy / localhost:8081 {
        proxy_header Host {host}
    }
}

application-1.my-server.company.com {
    proxy / localhost:8082 {
        proxy_header Host {host}
    }
}

这是第一次运行,它会自动为所有站点启用HTTPS (使用“让我们加密”中的自动生成的证书),并将所有HTTP请求重定向到它们的HTTPS等效项。

这个设置还意味着我不必在VM上安装IIS。

注意:您需要为端口80和443添加入站防火墙规则才能工作。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-05-11 12:05:17

如果我正确理解了您的问题,请执行以下操作:

代码语言:javascript
复制
application-1.my-server.company.com point to my-server.cloudapp.azure.com:8080 
application-2.my-server.company.com point to my-server.cloudapp.azure.com:8081 
application-3.my-server.company.com point to my-server.cloudapp.azure.com:8082 

一种解决方案是使用反向代理。有关详细信息,请参阅此问题:如何将子域重定向到同一服务器上的不同端口?。您可以在反向代理和web服务器之间使用自签名证书。

您还可以卸载SSL证书:https://kb.paessler.com/en/topic/44613-using-windows-iis-as-ssl-proxy-for-prtg。但是,您需要管理多个证书。您可以在每个应用程序之前添加一个nginx反向代理来添加SSL支持。

在你的DNS中,为Myserver.company.com添加一个记录。子域最好是在同一台服务器上创建CNAME记录。这样,您只需在IP更改时更新A记录。否则,为每个子域创建一个记录。

对于SSL证书。你必须在每个服务器上都有一个证书。当您使用多台服务器时,反向代理和web服务之间的通信必须是安全的。这是因为在您的服务器之间也可能有一个处于中间攻击的人。

票数 5
EN

Server Fault用户

发布于 2016-05-11 12:36:31

您可以创建三个虚拟主机并为每个应用程序设置绑定名称(DNS记录类型A,我认为您不能使用CNAME,因为A记录在托管的应用程序中是相同的),您可以看到https://technet.microsoft.com/en-us/library/cc731692(v=ws.10).aspx

最后,为每个虚拟主机创建一个url重写规则。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/774099

复制
相关文章

相似问题

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