如何在无业游民的访客中连接到基于名称的虚拟主机?

时间:2019-09-04 19:20:17

标签: apache vagrant

在盒子里,我有两个虚拟主机:

<VirtualHost *:80>
    HostName my.site1
    ...
</Virtualhost *:80>

<VirtualHost *:80>
    HostName my.site2
    ...
</VirtualHost>

如何从主机连接到来宾内部的虚拟主机?在我的(主持人)/etc/hosts中,我有:

127.0.0.1 my.site1
127.0.0.1 my.site2

由于Vagrant的端口映射,该来宾只能以my.site1:port的身份访问,例如my.site:3000。这样,来宾内部的Apache会将我带到根目录(Apache的欢迎站点)。这两个虚拟主机都相同:my.site1:3000my.site2:3000

apachectl -S日志:

VirtualHost configuration:
*:80     is a NameVirtualHost
         default server stretch.localdomain (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost stretch.localdomain (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost my.site1 (/etc/apache2/sites-enabled/001-site1.conf:1)
         port 80 namevhost my.site2 (/etc/apache2/sites-enabled/002-site2.conf:1)

是因为虚拟主机配置不正确还是我在名称/端口或主机/来宾配置中缺少某些地方?

我说对了,应该这样吗?

my.site1:3000 -> contents of my.site1
my.site2:3000 -> contents of my.site2

1 个答案:

答案 0 :(得分:0)

好的,所以这里的问题是网络。我能够重现此问题。 首先,请在Vagrant中禁用端口转发。只需注释config.vm.network "forwarded_port", guest: 80, host: 8070并执行vagrant reload即可。要使此功能正常运行,您需要检查主机的IP地址,然后转到Vagrant文​​件并编辑config.vm.network "private_network", ip: "X.X.X.X",以便ip这里的地址实际上与您的主机在同一网络上。我所做的只是将最后一个八位位组增加了1。我的本地IP地址是192.168.23.45,所以我将192.168.23.46分配给了Vagrant客人。

完成此操作后,也许只需使用this shell脚本为自己创建虚拟主机,就可以避免所有麻烦。我已将输出粘贴到下面,您可以查看下面的内容,以设置我的两个虚拟主机的名称分别为mysite1和mysite2。

然后将主机文件条目放在主机上,如下所示:

192.168.23.46 mysite1 192.168.23.46 mysite2

然后使用http://mysite1http://mysite2访问网站。您可能需要更改脚本在相应文档根目录下放置的index.php的内容,以便可以确保请求由正确的虚拟主机处理,因为此脚本仅处理默认的apache的index.php。将在您的两个文档根目录下找到。

另一个选择是在公共网络上使“无业游民”框可用,然后 使用公共IP对其进行访问,为此,您将必须在Vagrant文​​件中启用config.vm.network "public_network",并且创建虚拟主机的其余过程是相同的(使用此脚本)。

[root@localhost vagrant]# bash test.sh
Enter the server name your want (without www) : mysite1
Enter a CNAME (e.g. :www or dev for dev.website.com) : mysite1
Enter the path of directory you wanna use (e.g. : /var/www/, dont forget the /): /var/www/mysite1/
Enter the user you wanna use (e.g. : apache) : apache
Enter the listened IP for the server (e.g. : *): *
Web directory created with success !
/etc/httpd/conf.d/mysite1.conf
Virtual host created !
Would you like me to create ssl virtual host [y/n]?
n
Testing configuration
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Would you like me to restart the server [y/n]?
y
Redirecting to /bin/systemctl restart httpd.service
======================================
All works done! You should be able to see your website at http://mysite1

Share the love! <3
======================================

Wanna contribute to improve this script? Found a bug? https://gist.github.com/mattmezza/2e326ba2f1352a4b42b8
[root@localhost vagrant]# bash test.sh
Enter the server name your want (without www) : mysite2
Enter a CNAME (e.g. :www or dev for dev.website.com) : mysite2
Enter the path of directory you wanna use (e.g. : /var/www/, dont forget the /): /var/www/mysite2/
Enter the user you wanna use (e.g. : apache) : apache
Enter the listened IP for the server (e.g. : *): *
Web directory created with success !
/etc/httpd/conf.d/mysite2.conf
Virtual host created !
Would you like me to create ssl virtual host [y/n]?
n
Testing configuration
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Would you like me to restart the server [y/n]?
y
Redirecting to /bin/systemctl restart httpd.service
======================================
All works done! You should be able to see your website at http://mysite2

Share the love! <3
======================================

Wanna contribute to improve this script? Found a bug? https://gist.github.com/mattmezza/2e326ba2f1352a4b42b8

如果您需要更多说明,请告诉我。

相关问题