在我的 Apache2 服务器上启用 HTTPS 后 - 每个请求都会出现 404 错误

Mic*_*rst 10 configuration https http-status-code-404 apache-2.4 raspbian

好的,所以我以前没有使用 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>
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

Iva*_*van 11

是否绝对有必要将所有 http 请求重定向到 https?因为这似乎就是你在这里想要做的。

我建议您首先从您的 conf 中删除以下几行:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
Run Code Online (Sandbox Code Playgroud)

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


Mic*_*rst 11

我不记得我是怎么想出来的,但我偶然发现了一些建议放置的东西:

<VirtualHost _default_:443>

代替:

<VirtualHost *:443>

自从更换它以来,我的 SSL 一直运行良好。


Ant*_*ito 10

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

这是一个非常基本的 conf,如果可行的话,如果仍然需要添加你的重定向。

如果这不起作用,请显示您的 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>
Run Code Online (Sandbox Code Playgroud)