/etc/apache2/sites-available/[名称].conf

/etc/apache2/sites-available/[名称].conf

好吧,我以前从未使用过 SSL/HTTPS,我只处理过标准 HTTP。最近我开始着手一个需要 SSL 的网站。所以当然,我已经研究了如何开始。我已经成功安装 SSL 证书 - 出现绿色挂锁,服务器响应端口 443 上的 HTTPS 请求。我的问题是,无论我做什么,我都无法使用 HTTPS/SSL 显示任何页面,但它们在端口 80/HTTP 上显示正常(直到我将 HTTP 重定向到 HTTPS)。

简而言之,我可以完全正常访问 HTTPS 网站,但是我的页面没有被发送,而是每次请求都会发送 404。


/etc/apache2/sites-available/[名称].conf

<VirtualHost *:80>
    ServerName [serverName]

    RewriteEngine On

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName [serverName]
    ServerAdmin [email]
    DocumentRoot [docRoot]

    # I know the following SSL cert stuff is correct

    SSLEngine On
    SSLCertificateFile [...]/[domain].crt
    SSLCertificateKeyFile [...]/[certificate].key
    SSLCertificateChainFile [...]/[theotherone].crt

    ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
        CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined

        <Directory "[docRoot]">

                Options Indexes FollowSymLinks MultiViews

        AllowOverride All
        Order allow,deny
        allow from all

        </Directory>

</VirtualHost>

我不确定您是否还有其他想要查看的内容或任何其他详细信息,但如果有,请告诉我。

编辑:

在配置文件中搜索一番后,我发现无论出于什么原因,当连接到 HTTPS 时,服务器都会使用默认配置中的文档根目录 (/var/www/),但是 a2ensite 未启用此默认配置。我似乎无法弄清楚导致这种情况的配置位于何处

答案1

是否绝对有必要将所有 http 请求重定向到 https?因为这似乎是您在此处尝试执行的操作。

我建议您首先从配置文件中删除以下几行:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

我怀疑那里的语法可能有误。然后尝试在每个 http:// 和 https:// 协议上重新连接。

答案2

我记不清是怎么想出来的,但是我在某个地方偶然发现了一些建议:

<VirtualHost _default_:443>

代替:

<VirtualHost *:443>

自从更换了它之后,我的 SSL 一直运行良好。

答案3

尝试编辑你的文件使其看起来像这样:

这是一个非常基本的配置,如果它有效,请添加您的重定向(如果仍然需要)。

如果这不起作用请显示您的 ssl.conf

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

相关内容