我有一个带有 1 个 ipv4 地址和一些 ipv6 地址的服务器。一个域被重定向到 ipv4 A 记录我像这样设置 apache ports.conf:
Listen ip.v4.address:80
NameVirtualHost ip.v4.address:80
Run Code Online (Sandbox Code Playgroud)
和虚拟主机文件:
<VirtualHost ip.v4.address:80>
DocumentRoot /var/www/first/
ServerName first.domain
ServerAlias www.first.domain
ErrorLog ...
CustomLog ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
一切正常。
现在我想用第二个 ip 为第二个域创建新的虚拟主机。我将第二个域重定向到 ipv6 AAAA 记录,添加到 ports.conf:
Listen [ip.v6.address]:80
NameVirtualHost [ip.v6.address]:80
Run Code Online (Sandbox Code Playgroud)
创建新的虚拟主机文件:
<VirtualHost [ip.v6.address]:80>
DocumentRoot /var/www/second/
ServerName second.domain
ServerAlias www.second.domain
ErrorLog ...
CustomLog ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并重新启动Apache。服务器启动时没有错误,但它不起作用。当我在浏览器中输入第二个域时,找不到服务器。当我进入[ip.v6.address]网站时出现。
有什么帮助吗?
我正在尝试使用基本的 master/catch-all vhost 配置来设置我的开发 nginx/PHP 服务器,以便我可以根据需要创建无限的___.framework.loc域。
server {
listen 80;
index index.html index.htm index.php;
# Test 1
server_name ~^(.+)\.frameworks\.loc$;
set $file_path $1;
root /var/www/frameworks/$file_path/public;
include /etc/nginx/php.conf;
}
Run Code Online (Sandbox Code Playgroud)
但是,对于此设置,nginx 会响应 404 错误。我知道 nginx 和 PHP 正在工作并且有权限,因为localhost我使用的配置工作正常。
server {
listen 80 default;
server_name localhost;
root /var/www/localhost;
index index.html index.htm index.php;
include /etc/nginx/php.conf;
}
Run Code Online (Sandbox Code Playgroud)
我应该检查什么才能找到问题?这是他们正在加载的 php.conf 的副本。
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_index index.php;
# …Run Code Online (Sandbox Code Playgroud) 我们的网站mysite.com将托管在具有虚拟主机(基于名称)的服务器上10.20.30.40。但是,DNS 记录当前指向66.77.88.99.
我想在测试时保持这些 DNS 记录指向66.77.88.99;有什么方法可以让我访问10.20.30.40吗?
由于目标服务器使用虚拟主机,我不能简单地输入 IP 地址在目标站点上进行测试。此外,我无法控制目标服务器,因此无法设置子域进行测试。
如何配置 apache 以拒绝直接连接到 IP 地址 ( http://xxx.xxx.xxx.xxx ) 而不是 vhost 名称http://example.com 的连接?
我的虚拟主机配置:
ServerName example.com
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/
<Directory /var/www/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我需要从单个 IP 托管多个带有 SSL 的 Apache 虚拟主机。
现在 - 我明白,因为 SSL 围绕着 HTTP 请求,所以在首先将公钥发送到客户端之前,无法知道正在请求哪个主机。这实质上打破了使用标准 SSL 证书的 SSL 虚拟主机的可能性。
我已获得统一通信证书 (UCC),也称为主题备用名称 (SAN) 证书。这允许我为多个域提供相同的证书。
我希望这是 Apache 为任何SSL 请求提供的证书- 然后在建立加密后让 Apache 像往常一样解析虚拟主机。
我应该如何为此配置Apache?我试图研究如何做到这一点,但我能找到的只是说这是可能的,但没有具体说明:
wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
虽然 Apache 可以在看到请求中的主机名后重新协商 SSL 连接(并且确实如此),但在初始握手期间选择正确的服务器证书以用于匹配请求主机名为时已晚,导致浏览器警告/错误其中的主机名错误。
serverfault.com/questions/48334/apache-virtual-hosts-with-ssl
顺便说一句,在一个 IP 地址上可能有多个 SSL 安全的命名虚拟主机 - 我在我的网站上这样做 - 但它会在 Apache 日志中产生各种警告,并在浏览器中产生证书警告。对于需要看起来干净的生产站点,我当然不会推荐它。-大卫 7 月 31 日 4:58
www.digicert.com/subject-alternative-name.htm
虚拟主机 单个 IP 地址上的多个 SSL 站点。在单个服务器上托管多个启用 SSL 的站点通常需要每个站点具有唯一的 IP 地址,但具有主题备用名称的证书可以解决此问题。Microsoft IIS 6 和 Apache 都能够使用统一通信 SSL(也称为 SAN 证书)访问虚拟主机 HTTPS 站点。
请帮忙。
是否可以有一个单独的 php.ini 文件来覆盖每个虚拟主机的默认 php.ini 文件?我正在运行 Apache/2.2.14、PHP 5.3.2-1。
例如,我有几个 vhost 指向我/var/www/目录中的域:
/var/www/website1.com
/var/www/website2.com
Run Code Online (Sandbox Code Playgroud)
我想要的是能够在每个目录中放置一个自定义 php.ini 文件,该文件将仅覆盖该虚拟主机的默认值,但如果未指定该值,则保留原始默认值:
/var/www/website1.com/htdocs/
/var/www/website1.com/php.ini
Run Code Online (Sandbox Code Playgroud)
编辑
对于那些感兴趣的人,我在如何使用 NameVirtualHosts 在 LAMP 服务器上设置每个站点的 php.ini 文件?.
我正在尝试将多个主机名重定向到一个,例如,如果您输入以下任何一个:
foo.example.com
www.example.com
bar.example.com
eample.com
Run Code Online (Sandbox Code Playgroud)
你必须被重定向到 www.example.com
我已经安装了一个www.example.com作为 ServerName的虚拟主机,其他的作为 ServerAlias,并使用 mod_rewrite 检查主机名是否正确,如果不正确则进行重定向。
问题是一切似乎都与 ServerName 指令主机名一起提供,所以 mod_rewrite 总是得到www.example.com,这与 apache2 文档一致:
例如,假设您正在为域 www.domain.tld 提供服务,并且您希望添加指向相同 IP 地址的虚拟主机 www.otherdomain.tld。然后您只需将以下内容添加到 httpd.conf:
名称虚拟主机 *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
<VirtualHost *:80>
服务器名称 www.otherdomain.tld
DocumentRoot /www/otherdomain您也可以指定显式 IP 地址来代替 NameVirtualHost 和指令中的 *。例如,您可能希望这样做是为了在一个 IP 地址上运行一些基于名称的虚拟主机,以及在另一个地址上运行基于 IP 或另一组基于名称的虚拟主机。
许多服务器希望通过多个名称进行访问。这可以通过放置在该部分内的 ServerAlias 指令实现。例如,在上面的第一个块中,ServerAlias 指令指示列出的名称是人们可以用来查看同一网站的其他名称:
ServerAlias domain.tld *.domain.tld 然后对 domain.tld 域中所有主机的请求将由 www.domain.tld 虚拟主机提供服务。
是否有任何 apache2 指令来避免此功能并使用它们匹配的 ServerAlias 的主机名获取请求服务器?
或者我必须为重定向创建另一个虚拟主机?
谢谢
是否可以根据源IP为不同的虚拟主机配置 Apache ?(即相同的接口,相同的主机名,但两个不同的虚拟主机,具有不同的内容,基于源IP。)
这样做的动机是我的 IP 地址可以正确访问该站点,但其他人都可以访问保留页面。传统的解决方案似乎是使用 mod_rewrite 将访问者引导到同一 docroot 中的单独页面,但我想为保留页面使用完全不同的 docroot。
我是 Zabbix 和企业监控的新手。我刚刚安装完 Zabbix 2.4。
我正在尝试监视我们vhosts在不同服务器上的所有脱位状态。
到目前为止,我想出的唯一解决方案是Web scenario为每个vhost我想要监控的服务器手动添加一个到 Zabbix Server 主机。但它不是那么好用。
四处搜索我发现了一个具有部分功能想法的论坛主题:使用 atemplate从目标服务器读取所有vhosts(通过 a macro)并Web scenario为每个vhost.
编辑:此解决方案(基于 Zabbix 2.2)不起作用,因为无法将 LLD(低级发现)与Web scenarios.
有一个功能请求,因为11月14日开放来实现LLD的Web scenarios。
问题是是否有一些解决方案或建议来说明如何在等待功能实现时进行这种监控,或者我的方法可能完全错误。
我正在尝试在运行 centos7.1 的单个服务器上托管我的网站。我可以在端口上虚拟主机,80
但是当我将端口更改second-site为8080它指向first-site. 但是,对于 URLhttp://62.210.xx.xx:8080/其正常工作,指向second-site.
我这样做:
配置文件
Listen 80
Listen 8080
also tried
Listen 0.0.0.0:80
Listen 0.0.0.0:8080
but same
commented out for apache 2.4
#NameVirtualHost 62.210.xx.xx:80
#NameVirtualHost 62.210.xx.xx:8080
ServerAdmin root@localhost
#first-site.com
<VirtualHost 62.210.xx.xx:80>
ServerName first-site.com
ServerAlias www.first-site.com
DocumentRoot /var/www/first-site
</VirtualHost>
#second-site.com
<VirtualHost 62.210.xx.xx:8080>
ServerName second-site.com
ServerAlias www.second-site.com
DocumentRoot /var/www/second-site
</VirtualHost>
netstat -tulpn | grep httpd
tcp6 0 0 :::80 :::* LISTEN 25253/httpd
tcp6 0 0 :::8080 :::* LISTEN …Run Code Online (Sandbox Code Playgroud) virtualhost ×10
apache-2.2 ×6
apache-2.4 ×1
certificate ×1
ip ×1
ipv6 ×1
linux ×1
monitoring ×1
nginx ×1
php ×1
php.ini ×1
redirection ×1
serveralias ×1
ssl ×1
zabbix ×1