我有一个虚拟机在三个不同的端口上运行三个自我托pipe的应用程序(不在IIS中托pipe)。
我可以通过以下url访问他们:
my-server.cloudapp.azure.com:8080 my-server.cloudapp.azure.com:8081 my-server.cloudapp.azure.com:8082 我已经购买了域名( my-server.company.com ),并且想要创build三个指向每个应用程序的子域
application-1.my-server.company.com application-2.my-server.company.com application-3.my-server.company.com 我的第一个想法是在虚拟机上安装IIS,并使用本文中提到的默认网站上的URL Rewrite设置反向代理( http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with -url-rewrite-for-iis )。
因此,在这种情况下,我会为每个子域设置CNAMElogging以指向my-server.cloudapp.azure.com:80 ,然后将反向代理configuration为转发到不同的端口( 8082 )基于主机头。
这是可能的/最好的方式去做这个?
第二个问题是一旦我得到这个工作,我怎么能添加ssl?
每个子域都需要自己的ssl证书,在这种情况下,如何使用上面的设置(没有iis网站来绑定每个证书)。 或者我可以只使用my-server.company.com的证书,然后在反向代理卸载?
我创build了CNAME dnslogging,如下所示:
CNAME | application-1 | my-server.cloudapp.azure.com CNAME | application-2 | my-server.cloudapp.azure.com CNAME | application-2 | my-server.cloudapp.azure.com
然后在Azure虚拟机上运行Caddy (一个带有自动HTTPS的HTTP / 2 Web服务器)和下面的Caddyfile:
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} } }
这种优点是Caddy第一次运行,它会自动为所有站点启用HTTPS(使用来自Let's Encrypt的自动生成的证书),并将所有HTTP请求redirect到与其相当的HTTPS。
这个设置也意味着我不必在虚拟机上安装IIS。
注意:您需要为端口80和443添join站防火墙规则,以便Caddy正常工作
如果我正确理解你的问题,你想要做到以下几点:
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
一个解决scheme是使用反向代理。 有关详细信息,请参阅此问题: 如何将子域redirect到同一服务器上的其他端口? 。 您可以在反向代理和Web服务器之间使用自签名证书。
您也可以卸载SSL证书: https : //kb.paessler.com/en/topic/44613-using-windows-iis-as-ssl-proxy-for-prtg 。 但是,那么你需要pipe理多个证书。 您可以在每个应用程序之前添加一个nginx反向代理来添加SSL支持。
在你的DNS为my-server.company.com添加一个Alogging。 对于子域来说,最好的办法是在同一台服务器上创buildCNAMElogging。 这样,您只需在IP更改时更新Alogging。 否则,为每个子域创build一条logging。
对于SSL证书。 你必须在每台服务器上都有一个证书。 使用多台服务器时,反向代理和Web服务之间的stream量必须安全。 这是因为在你的服务器之间也可能有一个中间人攻击。
您可以创build三个虚拟主机并为每个应用程序设置绑定名称(DNSloggingtypesA,我认为您不能使用CNAME,因为Alogging在托pipe应用程序中相同),您可以看到https://technet.microsoft.com /en-us/library/cc731692(v=ws.10).aspx
最后,为每个虚拟主机创build一个url重写规则。