AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 74362
In Process
Tom Smykowski
Tom Smykowski
Asked: 2009-10-15 05:12:40 +0800 CST2009-10-15 05:12:40 +0800 CST 2009-10-15 05:12:40 +0800 CST

如何使用 DNS/主机名或其他方式解析到特定 IP:端口

  • 772

这是关于 IP/端口的 DNS/主机名解析的规范问题

示例 1

我在端口 80 上运行一个 Web 服务器,另一个在端口 87 上运行。我想使用 DNS,以便 www.example.com 转到端口 87。如何仅使用 DNS 来完成此操作?

示例 2

我在我的服务器上的非标准端口上运行服务。如何让客户端自动连接到这个非标准端口?我可以使用 DNS 吗?是否有一些特定于应用程序的支持,其中 DNS 可以指示 IP 和端口?

示例 3

某些应用程序协议是否专门支持主机名感知,并允许根据此信息采取特殊行动?服务器故障上是否还有其他问题可以涵盖其中一些问题?

Commandeering:这个问题最初是询问在同一台服务器上运行 IIS 和 Apache,但相同的概念可以应用于任何从客户端接收连接的服务器软件。下面的答案描述了使用 DNS 和应用程序协议支持为客户端分配连接的端口号的技术问题和解决方案。

domain-name-system web-server redirect
  • 10 10 个回答
  • 68803 Views

10 个回答

  • Voted
  1. Chris S
    2012-01-27T06:21:52+08:002012-01-27T06:21:52+08:00

    您不能使用 DNS 指向端口(除非客户端支持 SRV 记录,否则大多数不支持)。

    带有主机头的网站和协议

    您必须使用一些前端方法来执行此操作。通常,您会使用前端 Web 服务器或专用代理软件根据标头中请求的服务器名称将连接从端口 80 转发到端口 !80。一些防火墙也可以基于主机头转发。

    SRV 记录

    一些客户端支持查找 SRV 记录,这些记录指示指定服务的服务器的主机名和端口号(即用户指定“example.com”,客户端查找 SRV 记录并在端口“255”上获取“server101.example.com” "; 然后连接到那个)。一些客户也会在不需要的地方实现这一点(例如,我的上一部智能手机会在设置新的电子邮件帐户时查找 SRV 记录)。

    不幸的是,对 SRV 记录的支持很少见。只有少数显着的协议要求它支持(Jabber/XMPP、Kerberos、LDAP、SIP),而且即使是强制要求,也不是每个客户端都支持它。

    • 36
  2. Dave Drager
    2009-10-15T05:27:44+08:002009-10-15T05:27:44+08:00

    当你在浏览器中输入http://www.domain.com时,就知道 HTTP 端口在 80 上。因此,如果你已经有服务,没有直接的方法将 www.domain.com 指向 87 端口在 IIS 中的该端口上运行。

    话虽如此,有一些“解决方法”。

    • 只需使用http://www.domain.com:87/ - 这将连接到您服务器上的端口 87 (apache)。
    • 您可以设置重定向,以便http://www.domain.com/apache将转发(或代理,如果您想看的话)到 www.domain.com:87。
    • 您可以设置“虚拟主机”,以便 www.domain2.com 仍位于端口 80 上,并与 www.domain.com 共享。如果不修改 IIS,则无法进行设置。

    Sam 是对的,DNS 在端口方面是不可知的。在该端口上运行的服务会发生任何类型的端口重定向。因此,如果您别无选择,只能将其保留在端口 80 上,则需要对 IIS 做一些事情来实现这一点。

    我还通过在 Apache 上使用 mod_proxy 解决了你的情况,不确定是否有办法使用 IIS 来做到这一点。

    • 16
  3. JonnyJD
    2012-12-23T05:56:29+08:002012-12-23T05:56:29+08:00

    从技术上讲,您可以使用RFC 2782中定义的 DNS 服务器上的SRV 记录 来告诉浏览器哪些服务器在(子)域的哪些端口上处理 http:

    _http._tcp.www.example.com.  IN      SRV 0    5      80   www.example.com.
    _http._tcp.www2.example.com. IN      SRV 0    5      87   www.example.com.
    

    这适用于许多协议/服务,尤其是在协议规范中已经定义了 SRV 记录的使用的情况下。

    然而,正如这个“耻辱大厅”所说,大多数网络浏览器/客户端不支持这一点(对于 HTTP)。另请参阅why-do-browsers-not-use-srv-records。

    交易基本上是,SRV 不是必须包含在 http 协议中的,因此每个实现它的浏览器解析 URL 的方式都不同于没有实现它的浏览器。

    因此,您应该只将其用作一些可选的负载平衡,在内容方面选择哪个服务器无关紧要。“可选”,因为如果只有少数客户端实现它,它不会平衡大部分负载。

    • 13
  4. Phil
    2012-01-27T06:20:14+08:002012-01-27T06:20:14+08:00

    恐怕域名只能与IP地址相关联,而不能与端口相关联。

    大多数 Web 服务器(例如 Apache、IIS 等)确实允许您将两个域托管在同一个 IP 地址上,因为 Web 请求包含一个标识请求本身中的域的主机头字段。

    如果您说您正在使用的 Web 服务器是什么,我相信人们可以将您指向相关文档以根据需要设置您的服务器

    • 11
  5. Sam Cogan
    2009-10-15T05:18:48+08:002009-10-15T05:18:48+08:00

    DNS 没有重定向到特定端口的能力,所有 DNS 关心的是名称的 IP 地址解析,反之亦然。

    一些服务,如动态 IP DNS 提供商,如NO-IP提供的服务可以帮助您执行类似的操作,以绕过家庭 DNS 服务上的 IP 阻塞。

    • 6
  6. Lazy Badger
    2012-01-27T15:20:49+08:002012-01-27T15:20:49+08:00

    为了在非标准端口上使用任何(TBT) 服务并且不在 URI 中写入端口,每个人都可以使用 RFC 2782 中定义的 SRV 记录。

    _http._tcp.www.example.com. IN      SRV 0    5      87   www.example.com.
    

    区域中的所有其他 http 主机仍将在默认端口 80 上提供服务

    • 6
  7. Cristian Oliveira
    2017-10-26T14:12:33+08:002017-10-26T14:12:33+08:00

    最简单的方法是使用反向代理并将其设置为您的网络代理。您可以为它配置一个nginx或apache。我过去也遇到过基本相同的问题,并制作了一个工具来以简单的方式实现这种配置。尔格:https ://github.com/cristianoliveira/ergo

    我一直在使用它,基本上,它就像一个魅力:)

    • 2
  8. kasperd
    2014-08-22T10:07:15+08:002014-08-22T10:07:15+08:00

    在同一主机上部署两个 Web 服务器的一种方法是让它们都在两个不同 IPv6 地址上的端口 80 上侦听。IPv6 官方指定您可以为一个接口分配两个地址,并且有足够的 IPv6 地址可以做到这一点而不会用完地址。

    这是未来的证明,您的两个域都可以有指向不同 IP 地址的 AAAA 记录,因此这些域最终位于不同的 Web 服务器上。

    如果您也有一个 IPv4 地址,则可以使用 IPv4 地址上的端口 80 来运行反向代理。这样,仅限 IPv4 的客户端可以访问您的两个 Web 服务器。如果某些 Web 服务器与反向代理位于同一主机上并且某些 Web 服务器位于其他主机上,则反向代理方法甚至可以工作。

    在这样的设置example.org中,可能有地址192.0.2.1,2001:db8::1而example.net有地址192.0.2.1和2001:db8::2.

    • 1
  9. Satyam Rai
    2020-06-25T02:04:54+08:002020-06-25T02:04:54+08:00

    我不知道技术细节,但我如何解决这个问题是通过创建指向指定 HTTP 端口的 CloudFront 分配。

    然后使用 Route 53,我指向 CloudFront 分配。

    • 0
  10. Thiago Conrado
    2020-10-10T22:48:14+08:002020-10-10T22:48:14+08:00

    虽然上面提到的内容非常清楚地表明 DNS 记录与端口无关(SRV 记录除外——大多数客户端都没有包含这些记录);有一种可能性:使用大多数 DNS 提供商(例如 easyDNS)提供的URL 转发服务

    这将使您更容易为用户:

    因此,从您的示例 www.example.com转到端口 87,使用此服务,您可以配置http://www.example.com以访问http://www.example.com:87(基本上只有域,将能够访问您的站点);您还可以使用它来调用常规 http 协议解析为https://www.example.com:87,甚至将某些子页面指向https://www.example.com:87/dologin

    @kaperd 的 IPV6 解决方案似乎很完美,但是虽然我能够正确配置服务器,但我确实未能在 Chrome 上打开目标......也许它需要一些 twerking 而我没有花足够的时间。

    • 0

相关问题

  • 您使用哪些工具进行漏洞扫描?

  • 如何使用 Windows Server 解析 http 域名

  • 动态更新 /etc/resolv.conf 中列出的解析器

  • 内部名称解析

  • 如何强制我的网址始终以 www 开头?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve