使用端口来告诉我的服务器要返回哪个网站,而不是从 HTTP 请求中获取该信息,这有什么缺点吗?是否有最佳实践来决定使用哪个端口范围?
据我了解,如果我依赖 HTTP 请求,则使用 HTTPS 可能会很困难,尽管我目前不打算使用 HTTPS。
我相信我可以在每个网站域中设置一个 DNS 记录,告诉它通过 SRV 记录映射到我的服务器上的哪个端口。
该服务器是一个使用 HTTP 库的简单 golang 程序。该机器是一个通过 Google Compute Engine 托管的 Debian VM,具有静态 IP 地址。这两种选择都取决于 golang 库是否允许我指定端口或允许我解析 http 请求,我相信我都可以做到。我相信端口选项将导致运行多个服务器“进程”,这些进程将是单独的 golang 程序,管理起来可能很复杂(跟踪哪些站点在哪些端口上),而 HTTP 请求选项将导致运行一个可以为所有网站提供服务的服务器进程,这可能设置起来稍微复杂一些,但维护起来更容易。
答案1
坚持使用虚拟主机,让 apache 通过标头确定要服务哪个站点。使用 80 以外的端口并假设客户端会从 SRV 记录中找出答案是行不通的。
所有现代浏览器都支持这种方法,新版本的 apache 和 Web 浏览器甚至使用 TLS 支持这种方法,以防您最终决定切换到 HTTPS。