我遇到了apache2和虚拟主机的问题。我运行一个有多个站点的服务器。我有子域设置指向我的服务器IP。我的客户,那些选择拥有自己的域名的客户将其域/子域指向我的一个子域。我已经在多个网站上完成了这项工作并且它始终有效,除了现在,我无法弄清楚原因。 这是似乎无法正常工作的虚拟主机,当我尝试访问它时,它总是指向我的默认网站。
域重定向就像这样。 customer.domain.com - > customer.mydomain.com - >服务器IP
<VirtualHost customer.domain.com:443>
ServerName customer.domain.com
ServerAlias *customer.domain.com *customer.mydomain.com
DocumentRoot /var/www/page
<Directory />
Order Deny,Allow
Deny from all
</Directory>
<Directory /var/www/page>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/customer/logs/error.log
LogLevel warn
CustomLog /var/log/apache2/customer/logs/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
此格式用于所有其他网站,并将它们定向到正确的文件夹和网站。但是对于这个特定的站点,它总是被定向到默认站点。
我注意到当我运行apache2ctl -S时,我得到了两个IP。一个是我的服务器IP与所有虚拟主机,第二个IP似乎连接到新的虚拟主机,这是无法工作的。
52.52.52.52:443 customer.domain.com (/etc/apache2/sites-enabled/006-customer.domain.com.conf:1)
12.12.12.12:443 is a NameVirtualHost
default server default.mydomain.com (/etc/apache2/sites-enabled/001-default.mydomain.com.conf:1)
port 443 namevhost default.mydomain.com (/etc/apache2/sites-enabled/001-default.mydomain.com.conf:1)
alias www.default.mydomain.com
port 443 namevhost customer2.domain.com (/etc/apache2/sites-enabled/002-customer2.domain.com.conf:1)
alias www.customer2.domain.com
wild alias *subdomain.mydomain.com
*:80 default.mydomain.com (/etc/apache2/sites-enabled/000-default.conf:1) ..... more
我不确定要查找什么,日志似乎没有告诉我任何有用的东西。
关于我可能做错的任何想法?谢谢。
答案 0 :(得分:0)
您应该避免将主机名放在&lt; virtualhost&gt;中不惜一切成本。在典型的系统上,*:每个vhost中的端口就足够了。
如果您确实关心连接与BEFORE检查所使用的主机名相关的本地接口,请输入本地接口地址名称而不是主机名。但大多数人根本不关心使用什么界面。
使用主机名的特殊风险是它可能无法解析为任何本地接口,在这种情况下,Apache永远不会映射到它的连接。每个请求的主机名匹配仅从最佳匹配的连接级别信息开始。