标签: namevirtualhost

您应该编辑/删除默认的 apache 站点配置吗?

我刚刚学习了这篇关于在 Apache 中设置基于名称的虚拟化的教程,它运行得非常好。

本教程基本上让您将配置文件添加到sites-available被调用的yourdomain.com,然后将其链接到sites-enabled.

默认情况下,apache 在sites-availabledefault和 中包含两个站点配置文件defualt-ssl

您应该编辑这些文件还是从sites-enabled目录中删除链接?

在玩弄这个(本地)之后,我意识到默认情况下默认站点指向您的根/var/www目录,因此如果有人直接访问您服务器的 IP,他们是否会看到 中的所有虚拟主机和其他目录/var/www,除非默认的 vhost 配置已更改为指向不同的目录,或从sites-enabled?

我只是想知道如果服务器用于基于名称的虚拟化,默认站点通常会做什么?

对不起,如果我有一些不正确的,因为我对运行自己的网络服务器很陌生。

security virtualhost namevirtualhost apache-2.2

15
推荐指数
1
解决办法
2万
查看次数

Apache SNI namevhosts 总是路由到第一个 VirtualHost 条目

Apache 似乎将所有 https 请求路由到第一个,<VirtualHost *:443>而不管 ServerName/ServerAlias 字段上的 SNI 匹配如何。

Apache 使用 SNI
服务器版本构建:Apache/2.2.22 (Ubuntu)
服务器构建:2013 年 3 月 8 日 15:53:13
OpenSSL 1.0.1 2012 年 3 月 14 日

error.log 报告:

Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
Run Code Online (Sandbox Code Playgroud)

这表明 SNI 正在按照http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI工作(您如何判断您的 Apache 构建是否支持 SNI?)

SSL_TLS_SNI使用 HTTPS 请求时似乎已正确设置(使用 验证phpinfo()

配置:

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to …
Run Code Online (Sandbox Code Playgroud)

sni namevirtualhost apache-2.2

7
推荐指数
1
解决办法
2万
查看次数

Apache2 没有侦听套接字,尝试配置虚拟主机时无法打开日志

我正在尝试在 Apache2 中使用虚拟主机设置多个域。当我尝试浏览我的网站时,我目前收到“无法连接”错误,每当我尝试重新启动 Apache2 时,我都会收到关于“没有可用的侦听套接字,关闭无法打开日志”的错误。

最初,在配置 apache2.conf 和我的 /apache2/sites-enabled/domain1.com 后,我收到了 500 服务器错误和来自 apache2 的警告,即“NameVirtualHost *:80 has no VirtualHosts”。然后我在ports.conf文件中注释掉了一个额外的(我认为)NameVirtualHost *:80,现在无法连接和没有套接字错误。

这是我的 apache2.conf 底部的内容:

 NameVirtualHost *:80
#<VirtualHost *:80>                                                            

<IfModule mod_ssl.c>
    NameVirtualHost *:443
</IfModule>
Run Code Online (Sandbox Code Playgroud)

而我的/apache2/sites-enabled/domain1.com:

          # domain: domain1.com
          # public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

 # Admin email, Server Name (domain name) and any aliases
 ServerAdmin admin@domain1.com
 ServerName  domain1.com
 ServerAlias domain1.com


 # Index file and Document Root (where the public files are located)
 DirectoryIndex index.html
 DocumentRoot /home/demo/public_html/domain1.com/public


 # Custom log file locations
 LogLevel warn
 ErrorLog …
Run Code Online (Sandbox Code Playgroud)

socket namevirtualhost apache-2.2

6
推荐指数
1
解决办法
2万
查看次数

是否需要“NameVirtualHost”?

直到今天,我都使用基于名称的虚拟主机,但没有使用NameVirtualHost指令。有效。现在,我阅读了该指令并添加了它 - 没有变化。所以 -NameVirtualHost真的有必要吗,或者 Apache 2.4 会在没有设置时自动设置吗?

namevirtualhost apache-2.4

6
推荐指数
1
解决办法
1万
查看次数

VirtualHost 在重启时默认为错误部署

我们有一台运行七个域/子域的服务器。为了尽量减少这里的数量,我将包括其中的四个。

  1. 例子.com
  2. www.example.com
  3. dwf.example.com
  4. chris.example.com

服务器在 90% 的时间内都运行良好,但偶尔我们会收到大量请求并且数据库服务器出现故障。这然后最大的 apache 连接,因为所有的数据库连接都在等待超时。一切顺利,我们强制重启数据库,连接恢复。但是,请求随后会进入 dfw.example.com 配置。该部署没有我们的代码库,这是一个大问题,我不明白为什么会发生这种情况。发生这种情况时,它也会始终进行该部署,而我们拥有的其他 5 个部署中的任何一个都不会。

从我阅读的文档中,我认为 Apache 通读了 httpd.conf 文件并查找了第一个 NamedVirtualHost 匹配项:

现在,当请求到达时,服务器将首先检查它是否使用与 NameVirtualHost 匹配的 IP 地址。如果是,那么它将查看<VirtualHost>具有匹配 IP 地址的每个部分,并尝试找到 ServerName 或 ServerAlias 与请求的主机名匹配的部分。如果找到,则使用该服务器的配置。如果未找到匹配的虚拟主机,则将使用与 IP 地址匹配的第一个列出的虚拟主机。

我们正在运行 Apache 2.2.15。

我认为与 httpd.conf 文件相关的部分:

Listen 80
Listen 255.255.255.255:443
Run Code Online (Sandbox Code Playgroud)

...

ServerName www.example.com
Run Code Online (Sandbox Code Playgroud)

...(这是确切的顺序,www (https/http),dfw,然后是所有其他版本)

NameVirtualHost www.example.com:80
<VirtualHost    www.example.com:80>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/www.example.com
    ServerName www.example.com
    DirectoryIndex index.html
    DirectoryIndex index.php
    LogLevel notice
    ErrorLog /var/log/httpd/www.example.com/error.log
    CustomLog /var/log/httpd/www.example.com/access.log w3c_extended
</VirtualHost>

NameVirtualHost www.example.com:443
<VirtualHost www.example.com:443>
    ServerAdmin webmaster@example.com
    DocumentRoot …
Run Code Online (Sandbox Code Playgroud)

httpd.conf virtualhost namevirtualhost apache-2.2

5
推荐指数
1
解决办法
180
查看次数

NameVirtualHost *:443 在 debian 上没有 VirtualHosts

我有一个 Apache 2.2 服务器可以工作,但NameVirtualHost *:443 has no VirtualHosts在重新启动时收到警告。但我确实有匹配的 VirtualHosts *:443

该系统是Debian挤压。该ports.conf文件如下所示:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
   NameVirtualHost *:443
   Listen 443
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这是-S使用 apache2ctl运行该选项时的输出:

% /usr/sbin/apache2ctl -S 
[Sat Mar 06 10:07:11 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443                  is a NameVirtualHost
         default server q2a-dev.example.org (/etc/apache2/sites-enabled/q2a:1)
         port 443 namevhost q2a-dev.example.org (/etc/apache2/sites-enabled/q2a:1)
         port 443 namevhost tcert-dev.example.org (/etc/apache2/sites-enabled/tcert-dev:1)
*:80                   is a NameVirtualHost
         default server emailtest-dev.example.org (/etc/apache2/sites-enabled/emailtest:1) …
Run Code Online (Sandbox Code Playgroud)

ssl namevirtualhost apache-2.2 debian-squeeze

3
推荐指数
1
解决办法
4万
查看次数