标签: virtualhost

Apache 基于名称的虚拟主机中的 ServerName 通配符?

在我们的 LAN 上,我在 DNS 服务器中设置了几个“假”TLD,目的是将它们用于基于 Apache 名称的虚拟主机。我想将其与 Ubuntu 10.04 LAMP 服务器上的大规模虚拟托管(即 VirtualDocumentRoot)结合起来。

但是,我无法让它选择正确的虚拟主机!

以下是 Apache 配置的摘要:

NameVirtualHost 10.10.0.205

<VirtualHost 10.10.0.205>
   ServerName *.test
   VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>

<VirtualHost 10.10.0.205>
   ServerName *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
   CustomLog /var/log/apache2/access.log vhost_combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

主机名(例如www.domain.com.dev)正确解析为 10.10.0.205,但始终选择最匹配的顶部虚拟主机,而不是底部虚拟主机。

我的印象是 Apache 会首先尝试匹配 ServerName,然后再默认为给定 IP 的顶级虚拟主机。我究竟做错了什么?或者这是不可能的,我必须为每个 TLD 使用另一个 IP?

apachectl -S 输出(修剪):

10.10.0.205:*          is a NameVirtualHost
    default server *.test
    port * namevhost *.test
    port * namevhost *.dev
Run Code Online (Sandbox Code Playgroud)

ubuntu lamp virtualhost apache-2.2

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

如何为Apache2创建多域自签名证书?

我有一个小的私人网络服务器,我有几个虚拟主机。我知道不可能为每个单独的虚拟主机分配一个证书,因为服务器仅在建立 SSL 连接后才发现请求哪个虚拟主机。但是是否可以拥有一个列出多个域的 SSL 证书?或者至少是一个通配符域,例如 *.example.com。如果是,我必须编写哪些 Linux 命令来制作这样的自签名证书?

补充:澄清 - 我只有一个 IP 地址用于所有虚拟主机。

ssl certificate virtualhost apache-2.2

16
推荐指数
2
解决办法
3万
查看次数

Apache 虚拟主机的“全能”访问日志?

我在 Web 服务器上设置了许多虚拟主机,每个主机都有自己的错误和访问日志。的相关行httpd.conf是这样的:

ErrorLog /var/log/httpd-error.log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd-access.log combined

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName myhost.com
    ServerAlias www.myhost.com
    DocumentRoot /var/www/myhost.com/htdocs
    ErrorLog /var/www/myhost.com/log/error.log
    CustomLog /var/www/myhost.com/log/access.log combined
</VirtualHost>

# ... many more VirtualHosts
Run Code Online (Sandbox Code Playgroud)

目前,我在 /var/log/httpd-error.log 中收到了一些随机错误,但在 /var/log/httpd-access.log 中却什么也没有。是否可以将所有访问和错误复制到共享日志文件中?是否可以在不向每个 VirtualHost 添加新条目的情况下执行此操作?

log-files virtualhost apache-2.2

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

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

您应该编辑/删除默认的 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万
查看次数

Nginx 中 server_name _ 和 server_name "" 有什么区别?

我想设置一个默认的全能服务器块来处理任何与我的确切server_name值不匹配的主机名。但我不确定我应该使用哪一个。

server {
    listen 80 default_server;
    server_name ""; # this is by default if no server_name specified
    return 444;
}
Run Code Online (Sandbox Code Playgroud)

或者

server {
    listen 80 default_server;
    server_name _;
    return 444;
}
Run Code Online (Sandbox Code Playgroud)

我已经测试过,它们似乎表现得一样。它们之间有什么区别吗?

nginx virtualhost

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

我可以在 Apache conf 的同一个 VirtualHost 中定义 HTTP 和 HTTPS 吗?

我有一个相当大的 VirtualHost 定义,我不想复制它,这样站点也将通过 HTTPS 运行。

这是我想要做的:

<VirtualHost *>
    ServerName example.com

    <If port=443>
        SSLEngine on
        SSLCertificateFile ...
        SSLCertificateKeyFile ...
        SSLCertificateChainFile ...
    </If>

    (other config)

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?
我是否缺少其他不复制配置的方法?

ssl virtualhost apache-2.2

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

在 nginx 中使用通配符证书的多个 SSL 虚拟主机

我有两个主机名共享相同的域名,我想通过 HTTPs 提供服务。我有一个通配符 SSL 证书并创建了两个 vhost 配置:

主机 A

listen      127.0.0.1:443 ssl;
server_name     a.example.com;
root        /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
Run Code Online (Sandbox Code Playgroud)

主机B

listen      127.0.0.1:443 ssl;
server_name     b.example.com;
root        /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
Run Code Online (Sandbox Code Playgroud)

但是,我为任一主机名提供了相同的虚拟主机。

ssl nginx https virtualhost ssl-certificate

14
推荐指数
2
解决办法
3万
查看次数

如何从命令行列出当前的 Apache 2 虚拟主机?

我想检索当前加载并侦听请求的虚拟主机列表,即不仅仅是 grepping 配置文件。

看起来apache2ctl -S是这样,但我不能 100% 确定这是否只是返回配置文件中包含的内容。

ubuntu virtualhost apache-2.4

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

是否可以在 Apache 中为单个 VirtualHost(贵宾犬)设置 SSLProtocol?

我正在尝试针对涉及在我的 Web 服务器上禁用 SSLv3的贵宾犬漏洞测试补丁。为了首先在非生产环境中进行测试,我在 VirtualHost 上为不同的测试服务器设置 SSLProtocol。我的配置看起来像这样:

<VirtualHost *:443>
    SSLEngine On
    SSLProtocol All -SSLv2 -SSLv3
    ServerName test.mysite.com
    # bunch of other stuff omitted
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然而,即使在重新启动 apache 之后,我的测试站点仍然声称易受攻击。这是预期的工作吗?我想知道我是否必须在全局 ssl 配置中设置它,或者是否有其他微妙的东西导致设置不采用和/或工作。

ssl virtualhost apache-2.2 apache-2.4

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