我目前正在尝试配置Apache HTTP Server的虚拟主机(子域),以便可以使用LAN上的另一台计算机访问它。当前使用PHP和MySQL的Apache设置在同一物理机器上本地工作。
所以我在非默认端口50080上运行了两个虚拟主机设置(开发和cms)。服务器的机器的IP为10.0.0.10。在同一台物理机器上,我可以使用以下方法访问两个虚拟主机:
development.localhost:50080
cms.localhost:50080
从不同的物理机器,我可以使用以下方式访问服务器的根目录:
10.0.0.10:50080
但我不知道或不知道如何从不同的机器访问虚拟主机。我试过像:
development.10.0.0.10:50080
cms.10.0.0.10:50080
但它们似乎不起作用。
以下是我的httpd-vhosts
文件的样子:
NameVirtualHost *:50080
<VirtualHost *:50080>
DocumentRoot "C:/www/HTTP"
ServerName localhost
</VirtualHost>
<VirtualHost *:50080>
ServerAdmin administrator@development.localhost
DocumentRoot "C:/www/HTTP/development"
ServerName development.localhost
ErrorLog "logs/development.localhost-error.log"
CustomLog "logs/development.localhost-access.log" common
</VirtualHost>
我在这里和Apache论坛上阅读了其他一些帖子,但这并不是确切的情况。
我想知道如何从其他计算机访问虚拟主机(子域)并尽可能保留相同的端口。
提前致谢
答案 0 :(得分:25)
好的,我明白了,如果其他人正在寻找这个配置,这是配置:
=============================================== ===================================
机器A(Apache HTTP Server): 的httpd的虚拟主机:
NameVirtualHost *:50080
<VirtualHost *:50080>
DocumentRoot "C:/www/HTTP"
ServerName localhost
ServerAlias alias <!-- Added -->
</VirtualHost>
<VirtualHost *:50080>
ServerAdmin administrator@development.localhost
DocumentRoot "C:/www/HTTP/development"
ServerName development.localhost
ServerAlias development.phoenix <!-- Added -->
ErrorLog "logs/development.localhost-error.log"
CustomLog "logs/development.localhost-access.log" common
</VirtualHost>
主机:
127.0.0.1 development.localhost
127.0.0.1 alias
127.0.0.1 development.alias
=============================================== ===================================
机器B(来宾机): 主机:
10.0.0.10 alias
10.0.0.10 development.alias
从第二台机器,您应该可以使用“alias”和“development.alias”进行访问
答案 1 :(得分:3)
我建议进行以下更改(添加ServerAlias行):
NameVirtualHost *:50080
<VirtualHost *:50080>
DocumentRoot "C:/www/HTTP"
ServerName localhost
ServerAlias cms.myserver.com
</VirtualHost>
<VirtualHost *:50080>
ServerAdmin administrator@development.localhost
DocumentRoot "C:/www/HTTP/development"
ServerName development.localhost
ServerAlias development.myserver.com
ErrorLog "logs/development.localhost-error.log"
CustomLog "logs/development.localhost-access.log" common
</VirtualHost>
重启Apache以确保更改生效。
然后在您的第二台计算机上,您需要为这些新域名添加自定义DNS条目。如果是Windows,请编辑文件c:\windows\system32\drivers\etc\hosts
。如果是Linux,请编辑/ etc / hosts。无论哪种方式添加:
10.0.0.10 development.myserver.com
10.0.0.10 cms.myserver.com
现在,您可以在第二台计算机上访问以下网址:
http://development.myserver.com:50080
http://cms.myserver.com:50080
答案 2 :(得分:2)
除非我遗漏了某些内容,否则您需要设置DNS条目,或者将条目添加到访问服务器的每台计算机的/ etc / hosts文件中。
localhost
是默认情况下存在于每个人的/ etc / hosts文件中的条目,始终指向127.0.0.1。在不添加/ etc / hosts条目的情况下,developer.localhost
不存在,并且在ip地址前加上子域名前缀根本不起作用。
答案 3 :(得分:1)
使用SSH + Putty隧道,因此在我的服务器上有一个127.0.0.1,我设法通过在我的服务器端执行以下操作来访问我的子域:
# nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.0.1 sub1.domain.com sub2.domain.com sub3.domain.com sub4.domain.com
我没有更改远程计算机的主机文件,它就像一个魅力
答案 4 :(得分:0)
对于Named Virtual Hosts
,您需要使用主机名或域名连接到您的apache服务器。它不适用于ips。
您可以在第二个系统的/etc/hosts
中插入一个条目。