Apache VirtualHosts 在端口 8080 上,但是 /etc/hosts 怎么样?

Apache VirtualHosts 在端口 8080 上,但是 /etc/hosts 怎么样?

可能重复:
我可以在 OS X 上的 /etc/hosts 中的条目中指定端口吗?

我让 NGINX 在端口 80 上运行,让 APACHE 在端口 8080 上运行(监听 8080)。

在 Apache 上,我在端口 8080 上有几个虚拟主机。

之前(当我在端口 80 上运行 apache 时)我在 /etc/hosts 文件上有域->ip 映射:

127.0.0.1 my-domain.dev

但现在我还需要指定端口,该怎么办呢?

我正在运行 Mac Os 10.7 (Lion),我的 VirtualHost 如下所示:

NameVirtualHost *:8080

<VirtualHost *:8080>
    ServerName localhost
    DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>

<VirtualHost *:8080>
    ServerName my-domain.dev
    DocumentRoot "/path/to/my/deploy/folder"
        <Directory "/path/to/my/deploy/folder">
            Order allow,deny
            Allow from all
            AllowOverride All       
        </Directory>
</VirtualHost>

(...)

答案1

不行。/etc/hosts 的工作方式与 DNS 类似,根本不处理端口。它只是将名称解析为 IP 地址。您必须在地址末尾加上 :8080。

答案2

您不能在主机中写入端口,并且使用主机中的旧设置更改端口将可以访问,您只需要在 URL 中添加:8080。

如果您希望将服务器保留在 8080 端口上,但将此端口默认为 http 端口而不是 80(以便使用旧式 URL),则必须添加区域定义的 SRV 记录(并运行 DNS 服务器,即使是本地的,也包含在此服务器中定义的域)

答案3

正如其他人所说,您不能使用 hosts 文件来定义 Apache 正在监听的端口。当 Apache 监听端口 80 时,您不必提供端口的原因是端口 80 是 http 协议的默认端口。如果您不想在 URL 中指定端口号,请考虑将 nginx 设置为 apache 站点的反向代理。

相关内容