记一个 Apache 配置问题

在一个运行 CentOS 6.7 系统的主机上给网站配置 SSL 加密访问特性的时候遭遇一个问题。虽然配置过程是按照早先的经验而来,配置文件也是按照以前的模板改编的,但是重启 httpd 服务后通过 HTTPS 访问网站却总是打开 Apache 的测试页面。该页面中提示没有 /var/www/html 目录的访问权限。

这个目录是默认的 Apache 虚拟主机目录,却并不是我设置的网站的根目录。所以肯定是配置文件出了问题。捣腾了几个小时之后,忽然发现是因为我通过 FileZillaSSH 修改、上传配置文件造成的。新创建的配置文件通过 FileZilla 上传之后的权限是 440(只有属主和组有且仅有读权限),被 root 账户复制到 Apache 配置目录后还保持了这个权限设置。所以造成 apache 用户无法读取配置文件内容,因而重启 httpd 服务也没能使之生效。这才造成了上述问题。

服务器上运行的是 Apache 2.2 版本。配置文件的几个注意点再列一下。

  • 安装 mod_ssl 时候自动创建的 /etc/httpd/conf.d/ssl.conf 文件中已有 Listen 443 的参数行,不能在虚拟主机配置中再次声明;
  • /etc/httpd/conf.d/ssl.conf 文件中有个 _default_ 的虚拟主机配置,可以给全部注释掉;如果不注释掉,最好修改其中的 SSLProtocolSSLCipherSuiteSSLCertificateFile 以及 SSLCertificateKeyFile 参数行的配置与主域名一致。
    Apache 2.2 不支持 Stapling (OCSP Stapling,一种证书有效性验证的手段)。
  • Apache 2.2.24 之前的版本不支持 SSLCompression off。CentOS 6.7 中目前整合的是 Apache 2.2.15。
  • Apache 2.2.15 已经支持 HSTS。
  • 如果要使用非标准端口,最好这样写,
    Listen <port>
    NameVirtualHost *:<port>

    也可以这样写,

    Listen <port>
    NameVirtualHost <IP>:<port>

    但是重启 httpd 服务时会有提示[warn] NameVirtualHost <IP>:<port> has no VirtualHosts”,然后 VirtualHost 配置时使用 <VirtualHost *:<port>>。如果写成 <VirtualHost <IP>:<port>>,则使用 Firefox 45 访问时会提示错误码 “SSL_ERROR_RX_RECORD_TOO_LONG” 而 Chrome 50 会提示 “ERR_SSL_PROTOCOL_ERROR”,反正是无法正常访问。

有的时候错的真是莫名其妙。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/a-problem-of-apache-configuration/>。转载请保留此信息及相应链接。

2 条关于 “记一个 Apache 配置问题” 的评论

    • 嗯,因为那个文件夹在 Windows 分区,默认上传之后就是这样子了。后来我把那个文件夹文件的默认权限都改成了 644,现在新建文件上传上去就是 644 的权限了。

雁过留声,人过留名

电子邮件地址不会被公开。 必填项已用*标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南