apache2有多个虚拟主机,但只有第一个可以工作


apache2 multiple virtualhost but only first one works

我在Ubuntu上运行Apache/2.4.12,我在/etc/apache2/sites-available/文件夹中添加了2.conf文件,并启用了它们。两个站点都使用相同的Symfony PHP文件。

aaa.conf

Listen 8080
<VirtualHost *:8080>

    ServerName local.aaa.com
    ServerAlias www.local.aaa.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/aaa/web
    <Directory "/var/www/html/aaa/web">
           AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/aaa_error.log
    CustomLog ${APACHE_LOG_DIR}/aaa_access.log combined
</VirtualHost>

bbb.conf

Listen 8081
<VirtualHost *:8081>

    ServerName local.bbb.com
    ServerAlias www.local.bbb.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/bbb/web
    <Directory "/var/www/html/bbb/web">
           AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/bbb_error.log
    CustomLog ${APACHE_LOG_DIR}/bbb_access.log combined
</VirtualHost>

我遇到的问题是,在service apache2 reload之后,只有我打开的第一个站点可以工作。例如:

第一种情况
-我重新加载
-我打开local.aa.com:8080它工作
-我打开local.bbb.com:8081它不起作用,我得到了一个PHP Fatal error: Class 'AppBundle''AppBundle' not found

第二种情况
-我重新加载
-我打开local.bbb.com:8081它工作
-我打开local.aa.com.8080它不起作用,我得到了一个PHP Fatal error: Class 'AppBundle''AppBundle' not found

编辑
@Ryan Vincent:netstat -a显示两个站点都在运行

所有的Listen指令都应该在Ubuntu提供的主apache配置文件(/etc/apache2/apache2.conf)中

启用了站点的文件夹必须只包含使用a2ensite生成的到可用站点的正确符号链接,这是您必须放置虚拟主机配置的位置。

将它们移到那里后,启用每个虚拟主机并重新加载apache。

sudo a2ensite aaa.conf
sudo a2ensite bbb.conf
sudo service apache2 reload

我也遇到了同样的问题。

它已经通过在我的防火墙(UFW)上添加一个规则来解决。我使用的端口是18180和18181。18180年港口的连接还可以,但18181年就不行了。我尝试了禁用UFW,但它不起作用,所以我决定添加规则"允许18181/tcp";以及";允许18181/udp";并且问题得到了解决。奇怪的是,它不适用于禁用UFW,但它就像lol

我希望这将有助于

相关文章: