我在 Ubuntu 16.04 上使用 Apache 2.4。
无论我做什么 - 都无法使虚拟主机工作,所有内容都路由到000-默认.conf。我已启用以下网站:
开发配置文件
<VirtualHost *.80>
ServerName dev.example.com
DocumentRoot "a valid path"
ProxyPass /api http://localhost:8090
ServerAdmin [email protected]
ProxyPreserveHost On
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy localhost
</VirtualHost>
000-默认.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
当然,域名已更改为example.com
,我删除了文档根目录的实际文件路径。
两个文件都显示/etc/apache2/sites-enabled
,如果在 dev.conf 中添加一些垃圾,Apache 不会启动,所以我知道它会读取它。DNS
设置正确 - dev.example.com 和 example.com 的 nslookup 返回相同的正确 IP(从外部网络测试)。
我在 Debian 和 Apache 2.2 上进行了类似的设置,并且运行良好(不再有它,无法比较)。
我发送的任何请求都会路由到000-默认.conf、dev.example.com 或 anything-that's-valid.example.com,因为我没有指令DocumentRoot
(我也尝试添加它)由于我重定向到 https 版本,所以我获取了默认的/var/www/html
。
此路径未出现在任何配置文件中,并且可能被编译为 的默认值DocumentRoot
。
有谁知道如何制作开发配置文件虚拟主机有用吗?
答案1
您有一个拼写错误:
<VirtualHost *.80>
应该
<VirtualHost *:80>