我正在尝试在Ubuntu 16.04上配置Apache WebServer,以通过以下两个VirtualHost指令为PHP网站和PHP API服务:
`<VirtualHost *:80>
ServerName phpapi.my-domain.net
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/services
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName nodeapi.my-domain.net
<Location "/">
ProxyPreserveHost On
ProxyPass http://localhost:2040/
ProxyPassReverse http://localhost:2040/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName admin.my-domain.net
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/admin
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>`
我在html内有一个admin文件夹,如果我简单地调用http :: IP_Address / admin,则该代码有效。
当我这样做时-> sudo apache2ctl -S我可以看到如下所示的VirtualHost:
VirtualHost configuration:*:80 is a NameVirtualHost
default server phpapi.my-domain.net (/etc/apache2/sites-enabled/my-
domain.net.conf:1)
port 80 namevhost nodeapi.my-domain.net (/etc/apache2/sites-
enabled/my-domain.net.conf:8)
port 80 namevhost admin.my-domain.net (/etc/apache2/sites-
enabled/my-domain.net.conf:18)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex proxy: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
现在,当我尝试运行http://admin.my-domain.net时,它可以工作并显示Ubuntu服务器页面(因此我的DNS可以工作)。当我给出项目文件的路径... http://admin.my-domain.net/admin时,我得到了404(在此服务器上找不到请求的URL / admin/。) http://phpapi.my-domain.net(获取404)也是如此。 但是有趣的是,NodeAPI设置起作用,我的API POST调用得到200 OK。
现在我不确定为什么PHP VirtualHost设置不起作用,而仅Node API设置起作用?如您所知,我是Apache2配置的新手。无论出于何种原因,我的域名中确实都有一个“连字符”。 我希望有人可以向我指出正确的方向或提供帮助,因为我花了很多时间在此上,以了解发生了什么并使其工作。
感谢您的时间。