我刚刚从 debian 7 升级到 debian 8(apache 2.4),名为 debian.domain.com 我有 Request Tracker(一个帮助台软件),我想从https://helpdesk.domain.com(我有一个有效的 SSL 证书)
将 helpdesk.domain.com 解析为 debian.domain.com 的正确 DNS 已经设置并运行良好。
我有一个小的 php 脚本,它通过纯 http 提供 Firefox 更新,并且我在 /var/www 中还有一个包含 Flash Player 更新的 pub 文件夹。这个必须通过 https 提供。
问题是:我可以从 helpdesk.domain.com 提供帮助台和闪存更新吗?
帮助台文件位于 /opt/rt4/share/html,/pub 文件夹位于 /var/www。
到目前为止我可以完成以下工作:
-Firefox 更新可通过普通的 http 进行
-Flash 更新通过 helpdesk.domain.com 服务器顺利进行
-Helpdesk 只能从 debian.domain.com 访问,因此收到证书错误
这是我当前的 apache 2.4 配置,如果可能的话,有人能帮我调整它以实现这一点吗?不知何故,我认为 Debian 7 运行良好,但我不确定:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName debian.domain.com:443
<Directory "/opt/rt4/sbin">
SSLOptions +StdEnvVars
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.cert
SSLCertificateKeyFile /etc/ssl/certs/private.key
SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt
AddDefaultCharset UTF-8
ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
DocumentRoot "/opt/rt4/share/html"
<Location />
<IfVersion >= 2.4>
Require all granted
</IfVersion>
Options +ExecCGI
AddHandler fcgid-script fcgi
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName helpdesk.domain.com:443
AddDefaultCharset UTF-8
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.cert
SSLCertificateKeyFile /etc/ssl/certs/private.key
SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt
</VirtualHost>
</IfModule>
这是我在 Debian 7(apache 2.2)上使用的旧配置,但我尝试使用它在这个版本,却发生了同样的事情
<IfModule mod_ssl.c>
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName debian.domain.com:443
AddDefaultCharset UTF-8
DocumentRoot /opt/rt4/share/html
Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/
ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
<Location />
## Apache version < 2.4
Order allow,deny
Allow from all
</Location>
<Location /NoAuth/images >
</Location>
<Directory "/opt/rt4/sbin">
SSLOptions +StdEnvVars
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory "/usr/lib/cgi-bin">
AllowOverride None
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/certs/domain/private.key
SSLCertificateChainFile /etc/ssl/certs/domain/root_bundle.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName helpdesk.domain.com:443
AddDefaultCharset UTF-8
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/certs/domain/private.key
SSLCertificateChainFile /etc/ssl/certs/domain/root_bundle.crt
</VirtualHost>
</IfModule>
更新:这是我的 000-default.conf 文件,用于纯 http。重定向不起作用,因为根据 Adobe 文档,flash 客户端直接请求 https1。我的 SSL 配置名为 rt.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
#AllowOverride None
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案1
请发布您的完整配置。缺少 http 配置。如果我不得不猜测,您必须执行以下操作:
将条目更改
ServerName
为以下内容:服务器名称 helpdesk.domain.com
确保您的配置
helpdesk.domain.com
不是 Apache 最先读取的。如果它们在不同的文件中,Apache 将按字母数字升序读取它们。Debian000-default.conf
上的默认设置通常会完成这项工作。为了确保某些文件使用 https,可以使用
mod_redirect
或mod_alias
(使用Redirect
指令即可。另请参阅文档。请解释“此服务必须通过 https 提供。”是什么意思。http 是否不允许运行?