kim*_*gro 2 domain-name-system iis
我有一台 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 并使用本文中提到的默认网站上的 URL Rewrite 设置反向代理(http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with -url-rewrite-for-iis)。
因此,在这种情况下,我将为每个要指向的子域设置 CNAME 记录my-server.cloudapp.azure.com:80
,然后配置反向代理以根据主机标头转发到不同的端口 ( 8080
, 8081
, 8082
)。
这是可能的/最好的方法吗?
第二个问题是一旦我开始工作,我该如何添加 ssl?
每个子域是否需要自己的 ssl 证书,在这种情况下,如何使用上述设置(没有 iis 网站将每个证书绑定到)。或者我可以只使用 my-server.company.com 的证书,然后在反向代理上卸载吗?
我创建了 CNAME dns 记录如下:
CNAME | application-1 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com
CNAME | application-2 | my-server.cloudapp.azure.com
Run Code Online (Sandbox Code Playgroud)
然后在 azure vm 上,我使用以下 Caddyfile运行Caddy(具有自动 HTTPS 的 HTTP/2 Web 服务器):
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}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,Caddy 第一次运行时,它会自动为您的所有站点启用 HTTPS(使用来自 Let's Encrypt 的自动生成的证书),并且还将所有 HTTP 请求重定向到它们的 HTTPS 等效项。
此设置还意味着我不必在 VM 上安装 IIS。
注意:您需要为端口 80 和 443 添加入站防火墙规则,以便 Caddy 工作
小智 5
如果我正确理解您的问题,您需要执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
一种解决方案是使用反向代理。有关详细信息,请参阅此问题:如何将子域重定向到同一服务器上的不同端口?. 您可以在反向代理和 Web 服务器之间使用自签名证书。
您还可以卸载 SSL 证书:https : //kb.paessler.com/en/topic/44613-using-windows-iis-as-ssl-proxy-for-prtg。但是随后您需要管理多个证书。您可以在每个应用程序之前放置一个 nginx 反向代理以添加 SSL 支持。
在您的 DNS 中为 my-server.company.com 添加一条 A 记录。子域最好的办法是在它们位于同一台服务器上时创建 CNAME 记录。这样,您只需在 IP 更改时更新 A 记录。否则为每个子域创建 A 记录。
对于 SSL 证书。您必须在每台服务器上都有一个证书。当您使用多个服务器时,您的反向代理和 Web 服务之间的流量必须是安全的。这是因为您的服务器之间也可能存在中间人攻击。