我让 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 站点的反向代理。