Apache2サーバーでHTTPSを有効にした後-すべてのリクエストで404エラーが発生する[終了]


10

さて、私はこれまでSSL / HTTPSの経験がありませんでした。標準のHTTPしか扱っていません。最近、SSLが必要なサイトで作業を開始しました。もちろん、私は外に出て、その方法を調査し、始めました。SSL証明書を正常にインストールする段階に到達しました-緑の南京錠が表示され、サーバーがポート443でHTTPSリクエストに応答します。 SSL、ただし、それらはポート80 / HTTPで正常に見えました(HTTPをHTTPSにリダイレクトするまで)。

簡単に言うと、HTTPSサイトに完全にアクセスできますが、ページは送信されず、リクエストごとに404が送信されます。


/etc/apache2/sites-available/[name].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では有効になっていません。これを引き起こしている構成がどこにあるのかわからないようです


あなたのRewriteあなたが悪いように構成リバースプロキシの背後にApacheを実行しようとしているように見えるのディレクティブは。Apacheがプロキシを介さずに直接ドメインにサービスを提供している場合は、すべてのRewriteディレクティブを削除し、それらを単一のに置き換えるだけRedirectです。また、各リクエストの処理VirtualHostを正確に確認できるように、それぞれに個別のログファイルを設定しますVirtualHost
kasperd 2016

Rewritesについては、一時的なrefirectを取得するためにのみ使用していました(その段階では100%確信が持てませんでした)、Redirectがそれを完全に実行できることを学びました(ええ、私が知らなかったのは悪いことです) )。個別のログファイルについては、それ以降に行っています。私はまた、問題が何であったかを理解しており、それを反映するように更新します。
マイケルロングハースト2016

回答:


11

すべてのhttpリクエストをhttpsにリダイレクトすることが絶対に必要ですか?それはあなたがここでやろうとしていることのようです。

まず、confから次の行を削除することをお勧めします。

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

構文が間違っているのではないかと思います。次に、各http://およびhttps://プロトコルで接続を再試行します。


このドメインで管理パネルを作成しているため、ほとんどすべてのリクエストに機密情報が含まれているため、すべてのHTTPをHTTPSにリダイレクトしたいと思います。リダイレクトが完全に機能するので、その構文が正しいことを知っています。問題は、サーバーが指定したdocumentrootの代わりに/ var / www / html内のファイルを探していることであると考えました
Michael Longhurst

ドキュメントパスはリダイレクトなしで機能しますか?試してみる価値がある...
Ivan

私は他の答えを最初に試しています、それが失敗した場合は前にそれを与えます
マイケルロングハースト

試してみたが、役に立たなかった
Michael Longhurst

*:443のアスタリスクをサーバーの実際のIPに置き換えてみてください。ポート80も同様です。また、ドキュメントルートパスの構文が/で始まる必要があることを確認してください
Ivan

11

どのように考え出したのか正確に思い出せませんが、どこかに置くように提案されたものに偶然出会いました。

<VirtualHost _default_:443>

の代わりに:

<VirtualHost *:443>

それを置き換えて以来、私のSSLは完全に機能しています。


10

次のようにファイルを編集してみてください。

これが非常に基本的な設定です。これが機能する場合は、必要に応じてリダイレクトを追加してください。

これが機能しない場合は、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>

いいえ、まだ機能しません。私が/ var / www / htmlに配置した一時的なindex.htmlをまだ表示しています。私はペーストビンを会議にリンクします
Michael Longhurst

これはペーストビンです。pastebin.com/ iwubgFye
Michael Longhurst

変更後にApacheを再起動していることを確認するだけですか?
Anthony Fornito 2016

はい、私が変更するすべてのものと私は再起動しています
マイケルロングハースト

想像できるすべての構成ファイルを開き、CTRL + Fを実行して、DocumentRootが "/ var / www / html"に設定されている場所を見つけましたが、何も見つかりませんでした。だから、私が生きている間、apacheが/ var / www / htmlから読み取られていないのになぜそれが読み取られているのか理解できない
Michael Longhurst
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.