अपने Apache2 सर्वर पर HTTPS सक्षम करने के बाद - मुझे हर अनुरोध पर 404 त्रुटियां मिलती हैं [बंद]


10

ठीक है, इसलिए मुझे पहले कभी एसएसएल / एचटीटीपीएस के साथ कोई अनुभव नहीं था, मैंने केवल मानक एचटीटीपी से निपटा है। हाल ही में मैंने एक साइट पर काम शुरू किया है जिसमें एसएसएल की आवश्यकता होगी। इसलिए निश्चित रूप से, मैं बाहर गया और शोध किया कि कैसे शुरू किया गया। मैं एसएसएल प्रमाणपत्र को सफलतापूर्वक स्थापित करने के चरण में पहुंच गया हूं - हरे रंग का पैडलॉक दिखाई देता है और सर्वर पोर्ट 443 पर HTTPS अनुरोधों का जवाब देता है। मेरे पास यह मुद्दा है कि मुझे कोई फर्क नहीं पड़ता कि मुझे HTTPS / का उपयोग करने के लिए कोई पृष्ठ दिखाई दे। एसएसएल, हालांकि वे पोर्ट 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निर्देश ऐसे लगते हैं जैसे आप अपाचे को बुरी तरह से कॉन्फ़िगर रिवर्स प्रॉक्सी के पीछे चलाने की कोशिश कर रहे हैं। यदि आपकी अपाचे बिना किसी प्रॉक्सी के सीधे डोमेन की सेवा कर रही है, तो आपको बस सभी Rewriteनिर्देशों को छोड़ देना चाहिए और उन्हें एकल के साथ बदलना चाहिए Redirect। और प्रत्येक के लिए अलग लॉगफ़ाइल्स को कॉन्फ़िगर करें VirtualHostताकि आप देख सकें कि VirtualHostप्रत्येक अनुरोध किस प्रक्रिया में है।
kasperd

जैसा कि पुनर्लेखन के लिए, मैं केवल एक अस्थायी पुनर्निर्देशन प्राप्त करने के लिए उनका उपयोग कर रहा था (मैं उस चरण में 100% सुनिश्चित नहीं था), मैंने अब यह जान लिया है कि रीडायरेक्ट पूरी तरह से सक्षम है (हाँ, बुरा है कि मुझे पता नहीं था) )। अलग लॉग फ़ाइलों के बारे में, मैंने तब से किया है। मुझे यह भी पता चल गया है कि मुद्दा क्या था और यह प्रतिबिंबित करने के लिए अपडेट करेगा।
माइकल लॉन्गहर्स्ट

जवाबों:


11

क्या http के सभी अनुरोधों को https में पुनर्निर्देशित करना नितांत आवश्यक है? क्योंकि ऐसा लगता है कि आप यहाँ क्या करने की कोशिश कर रहे हैं।

मेरा सुझाव है कि आप अपने कॉन्फिडेंस से निम्नलिखित लाइनों को हटाकर शुरू करें:

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

मुझे संदेह है कि वाक्यविन्यास वहां गलत हो सकता है। फिर प्रत्येक http: // और https: // प्रोटोकॉल पर फिर से कनेक्ट करने का प्रयास करें।


मुझे यकीन है कि मैं सभी HTTP को HTTPS पर पुनर्निर्देशित करना चाहता हूं, क्योंकि मैं इस डोमेन पर एक व्यवस्थापक पैनल बना रहा हूं, लगभग सभी अनुरोध संवेदनशील जानकारी का अनुरोध करते हैं। मुझे पता है कि सिंटेक्स सही है क्योंकि रीडायरेक्ट पूरी तरह से काम करता है। मुझे लगा है कि मुद्दा यह है कि सर्वर उन दस्तावेज़ों के बजाय / var / www / html में फ़ाइलों की तलाश कर रहा है जिन्हें मैंने निर्दिष्ट किया है
माइकल लॉन्गहर्स्ट

क्या दस्तावेज़ पथ पुनर्निर्देशित के बिना काम करता है? एक कोशिश imo ...
इवान

मैं दूसरे उत्तर को पहले कोशिश कर रहा हूं, अगर यह विफल हो जाता है तो पहले ही दे दूंगा
माइकल लॉन्गहर्स्ट

यह भी एक कोशिश है, लेकिन कोई फायदा नहीं हुआ
माइकल Longhurst

ठीक है, सर्वर के वास्तविक आईपी के साथ *: 443 से तारांकन को बदलने का प्रयास करें, वही पोर्ट 80 के लिए भी जाता है। इसके अलावा दस्तावेज़ रूट पथ के सिंटैक्स की जाँच करें /
इवान

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>

नहीं, अभी भी काम नहीं करता है, यह अभी भी अस्थायी index.html दिखा रहा है जिसे मैंने / var / www / html में रखा है। मैं एक पास्टबिन को मान के साथ जोड़ूंगा
माइकल लॉन्गहर्स्ट


सिर्फ यह पुष्टि करने के लिए कि परिवर्तन करने के बाद आप अपाचे को पुनः आरंभ कर रहे हैं?
एंथनी फोरनिटो

हां, कुछ भी और जो कुछ भी मैं बदलता हूं उसे मैं पुनः आरंभ कर रहा हूं
माइकल लॉन्गहर्स्ट

मैंने हर विन्यास फ़ाइल को खोला है जिसकी मैं कल्पना कर सकता हूं और CTRL + F को चलाने के लिए कहीं भी यह पा सकता हूं कि DocumentRoot "/ var / www / html" पर सेट है और यह कुछ भी नहीं के साथ आया है। इसलिए मैं अपने जीवन के आंकड़े के लिए यह नहीं बता सकता कि अपाचे / var / www / html से क्यों पढ़ा जा रहा है अगर यह नहीं बताया जा रहा है
माइकल लॉन्गहर्स्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.