【问题标题】:Apache different sites on different ports, still links to same site. Bind9 for domain namesApache 不同端口上的不同站点,仍然链接到同一个站点。 Bind9 用于域名
【发布时间】:2015-02-09 03:42:53
【问题描述】:

我一直在尝试创建 3 个不同的域,链接到同一台机器上的 3 个不同站点,其中 2 个有效,但第三个在不同端口上链接到第一页。

我的 apache 配置如下所示:

Listen 81
NameVirtualHost *:81
<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/www
</VirtualHost>

<VirtualHost *:80>
    ServerName www2.example.com
    DocumentRoot /var/www/www2
</VirtualHost>

<VirtualHost *:81>
    ServerName controlpanel.example.com
    DocumentRoot /var/www/controlpanel
</VirtualHost>

我使用 Bind9 设置域。

www     IN      A       123.123.123.123
www2    IN      A       123.123.123.123
controlpanel   IN      A       123.123.123.123

www 和 www2 工作正常并显示正确的站点,但是 controlpanel.example.com 也链接到第一个 www 站点。当我在 ip,xxx.xxx.xxx.xxx:81 上手动输入端口时,我得到了正确的链接。问题是我真的不知道我在哪里做错了,这是我第一次尝试这样的事情。你有什么想法吗?

我也在旧的 ubuntu 12.04 服务器上运行它。

【问题讨论】:

    标签: apache apache2 port bind virtualhost


    【解决方案1】:

    关于你在 cmets 中的上一个答案:

    你可以为 controlpanel.example.com 添加一个 80 端口的虚拟主机,并在里面放一条语句,

    Redirect / http://controlpanel.example.com:81
    

    ServerName 的目的不是告知浏览器您的网络服务器正在使用哪个端口。它用于基于名称的虚拟主机,并作为自引用链接的最后手段(开箱即用,自引用链接是使用客户端已经认为它通过 Host: 标头访问的任何内容生成的)

    但是你的要求肯定有一些很奇怪的地方。通常动机是不使用自定义端口,如果是,则使用低端口寻址服务器,并通过一些中介(负载平衡器、代理)重新映射端口。

    【讨论】:

    • 是的,端口不是很具体,我尝试过不同的但没有成功,所以我只选择了一个容易记住的端口。但是重定向似乎是一种方法。
    【解决方案2】:

    如果您希望您的第三个虚拟主机同时成为端口 81 上的默认值和端口 80 上的基于名称的选项:

    改变

    <VirtualHost *:81>
    

    <VirtualHost *:80 *:81>
    

    Apache 首先找到具有最佳 IP:PORT 匹配的虚拟主机集,然后如果 NameVirtualHost 也匹配,则开始查看该集中的 ServerNames。

    【讨论】:

    • 不,我只是希望它在我进入 controlpanel.example.com 时连接到端口 81。现在它只是向我显示与输入 www.example.com 相同的结果
    • 对不起,但我认为没有任何浏览器愿意对 URL 中的端口进行二次猜测。 HTTP 的默认端口是 80,您可以从 URL 中省略该端口。你猜它怎么猜 81?
    • 我想你误会了我的问题,它不应该猜测81,这就是整个问题,当你进入controlpanel.example.com时,apache应该自动选择端口81。这就是在端口 81 上创建虚拟服务器的全部意义,不是吗?为了不让用户不得不手动输入端口,除非我特别告诉它,否则他不会知道它是什么端口。如果您输入 www.example.com apache 应该通过端口 80 将您重定向到文件夹 www 中的文件,如果您输入 controlpanel.example.com apache 应该通过端口 81 将您重定向到 controlpanel 中的文件
    • 对不起,这里有太多的误解,无法真正单独解决。有很多中介可以让网络服务器监听备用端口,但仍然可以通过标准端口(HTTP 代理、IP 喷射器、NAT 设备、在主机中运行的网络防火墙软件)进行寻址。从根本上说,如果您只想根据主机名进行区分,则不应无缘无故地使用非标准端口,而应使用基本的基于名称的虚拟主机。
    • ergo controlpanel.example.com 应该会给您与输入 www.example.com:81 相同的结果。但无需管理员猜测端口 81
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2012-02-15
    • 2012-03-03
    相关资源
    最近更新 更多