Soru Apache2 sunucumda HTTPS'yi etkinleştirdikten sonra - her istekte 404 hata alıyorum [kapalı]


Tamam, şimdiye kadar SSL / HTTPS ile hiç deneyimim olmadı, sadece standart HTTP ile uğraştım. Kısa bir süre önce SSL'ye ihtiyaç duyan bir sitede çalışmaya başladım. Tabii ki dışarı çıktım ve nasıl başladığımı araştırdım. SSL sertifikasını başarıyla yükleme aşamasına geçtim - yeşil asma kilit belirdi ve sunucu 443 numaralı bağlantı noktasında HTTPS isteklerine yanıt veriyor. Sahip olduğum konu, ne olursa olsun, HTTPS kullanarak görünecek sayfalar alamıyorum. SSL, ancak port 80 / HTTP'de (HTTP'yi HTTPS'ye yönlendirene kadar) iyi görünüyorlardı.

Sadece HTTPS sitesine kesinlikle girebiliyorum, ancak sayfalar gönderilmiyor, her istek için bir 404 gönderiliyor.


/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>

Bakmak isteyebileceğiniz başka bir şey varsa ya da başka bir ayrıntı varsa emin değilim, ama eğer bana haber verilseydi.

DÜZENLE:

Bazı yapılandırma dosyalarında arama yaptıktan sonra, HTTPS'ye bağlanırken, sunucunun varsayılan yapılandırmada (/ var / www /) belge kökünü kullandığını ancak bu varsayılan yapılandırmanın a2ensite ile etkinleştirilmediğini, her ne nedenle olursa olsun kurdum. Buna neden olan yapılandırmanın nerede bulunduğunu anlayamıyorum.


10
2017-12-01 17:40


Menşei


Sizin Rewrite Yönergeler, kötü yapılandırılmış bir ters proxy'nin arkasında Apache'yi çalıştırmaya çalıştığınız gibi görünür. Apache'niz herhangi bir proxy olmadan doğrudan alan adına hizmet veriyorsa, tüm Rewrite direktifler ve bunları tek bir ile değiştirin Redirect. Her biri için ayrı günlük dosyaları yapılandırın VirtualHost tam olarak hangi VirtualHost her isteği işlemek. - kasperd
Rewrites'e gelince, onları sadece geçici bir refirect almak için kullanıyordum (bu aşamada% 100 emin değildim), şimdi Redirect'in bu konuda mükemmel bir yetenek olduğunu öğrendim (evet, kötü olduğunu bilmiyordum) ). Ayrı günlük dosyaları ile ilgili olarak, bunu yaptım. Ayrıca sorunun ne olduğunu anladım ve bunu yansıtacak şekilde güncellenecek. - Michael Longhurst


Cevaplar:


Tüm http isteklerini https'ye yönlendirmek kesinlikle gerekli midir? Çünkü burada yapmaya çalıştığın şey bu gibi görünüyor.

Aşağıdaki satırları conf'inizden kaldırarak başlamanızı öneririm:

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

Bence sözdizimi orada yanlış olabilir. Ardından, her bir http: // ve https: // protokolüne tekrar bağlanmayı deneyin.


11
2017-12-01 18:18



Tüm HTTP'nin HTTPS'ye yeniden yönlendirilmesini istediğime eminim, çünkü bu alanda bir yönetici paneli yapıyorum, neredeyse tüm istekler hassas bilgiler içeriyor. Yönlendirme mükemmel çalıştığından bu sözdiziminin doğru olduğunu biliyorum. Sorunun, sunucunun belirttiğim documentroot yerine / var / www / html dosyasında dosya aradığını belirledim. - Michael Longhurst
Belge yolu yönlendirme olmadan çalışır mı? Bir deneyin imo değer ... - Ivan
Diğer cevabı ilk denemeyi veriyorum, başarısız olursa - Michael Longhurst
Bunu da denedim, ama boşuna - Michael Longhurst
Tamam, yıldız işaretini *: 443 yerine gerçek sunucu IP ile değiştirmeyi deneyin, aynı zamanda bağlantı noktası 80 için de geçerli. / İle başlamalı belge kök yolunun sözdizimini de kontrol edin - Ivan


Bunu nasıl anladığımı tam olarak hatırlayamıyorum, ama şunu öneren bir yere rastladım:

<VirtualHost _default_:443>

Yerine:

<VirtualHost *:443>

Bunu değiştirdiğimden beri, SSL'm mükemmel bir şekilde çalışıyor.


11
2017-12-12 01:15





Böyle bir şeye bakmak için dosyanızı düzenlemeyi deneyin:

Bu çok temel bir konfeksiyon, eğer hala çalışıyorsa, yönlendirmelerinizi ekliyorsa.

Bu işe yaramazsa, lütfen ssl.conf dosyanızı gösterin.

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>

10
2017-12-01 18:12



Hayır, hala çalışmıyor, hala / var / www / html içine yerleştirdiğim geçici index.html gösteriliyor. Bir macun ile conf'ı bağlarım. - Michael Longhurst
Bu macun: pastebin.com/iwubgFye - Michael Longhurst
Sadece değişiklik yaptıktan sonra apache'yi yeniden başlattığınızı onaylamak için mi? - Anthony Fornito
Evet, bir şey ve değiştirdiğim her şey yeniden başlatılıyor - Michael Longhurst
DocumentRoot'un "/ var / www / html" ye ayarlandığı her yeri bulmak için bir CTRL + F çalıştırabildiğim her bir config dosyasını açtım ve hiçbir şeyle karşılaşmadı. Öyleyse, apache'nin neden / var / www / html'den okunduğunu söyleyemem hayatımın sebebi olamaz. - Michael Longhurst