【问题标题】:Multiple apache2 Virtual host sitses - All work except one多个 apache2 虚拟主机站点 - 除一个之外的所有工作
【发布时间】:2015-12-04 13:50:19
【问题描述】:

我对 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 

我不确定要查找什么,日志似乎没有告诉我任何有用的信息。

关于我可能做错了什么有什么想法吗?谢谢。

【问题讨论】:

  • 更新:我注意到当我尝试通过“https://”customer.domain.com 访问该站点时,我得到 ERR_CONNECTION_RESET,该网站不可用。如果没有 https,我会直接进入默认站点。
  • 可能是由于错误的 Listen 指令或没有虚拟主机 *:443?
  • @covener 你能详细说明一下吗?谢谢。
  • 您应该确保您正在侦听端口 443 上的所有接口,而不是特定接口(通过检查您的侦听配置)您还应该确保存在与所有接口匹配的启用 SSL 的虚拟主机(*:443) 而不是特定的。如果您考虑我在下面的回答将您置于典型配置中,您将免费获得此功能。

标签: apache virtualhost


【解决方案1】:

您应该不惜一切代价避免将主机名放在 中。在典型系统上,每个 vhost 中的 *:port 就足够了。

如果您在检查使用的主机名之前真的关心连接与哪个本地接口相关,请输入本地接口地址名称而不是主机名。但是大多数人根本不关心使用了什么接口。

使用主机名的特殊风险是它可能无法解析到任何本地接口,在这种情况下,Apache 永远不会映射到它的连接。每个请求的主机名匹配仅从最佳匹配的连接级别信息开始。

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2023-03-28
    • 1970-01-01
    • 2016-10-26
    • 2018-05-29
    • 1970-01-01
    相关资源
    最近更新 更多