IIS में सभी HTTP को HTTPS पर पुनर्निर्देशित करने का सबसे अच्छा तरीका


26

हम SSL (यानी HTTPS को पुनर्निर्देशित HTTP) को लागू करने के लिए अपने वेबसर्वर (IIS 10) पर सभी साइटें चाहते हैं।

वर्तमान में हम प्रत्येक साइट पर 'SSL की आवश्यकता' कर रहे हैं और उस विशिष्ट साइट के लिए https पते के लिए एक 403 errorहैंडलर की स्थापना कर रहे हैं 302 redirect

यह बहुत अच्छा काम करता है। लेकिन यह हर एक साइट के लिए एक दर्द है, मानव त्रुटि के लिए बहुत जगह है।

आदर्श रूप में मैं 301 redirectसभी के HTTP://*लिए एक स्थायी सेट करना चाहूंगाHTTPS://*

क्या IIS में ऐसा करने का एक सरल तरीका है?


क्या आप हर साइट के लिए यह परिवर्तन करने के लिए एक स्क्रिप्ट नहीं लिख सकते हैं जो प्रशासनिक बोझ को कम करेगा और टाइपोस और गलतियों को रोकने में भी मदद करेगा?
टोड विलकॉक्स

1
शीर्षक गलत है। मुझे लगता है कि "IIS में HTTPS को सभी HTTP को रीडायरेक्ट करने का सबसे अच्छा तरीका" पढ़ने का इरादा था
मिक

@ToddWilcox क्या आप इस तरह की स्क्रिप्ट का उदाहरण दे सकते हैं?
userSteve

IIS का उपयोग न करें: D

जवाबों:


40

IIS7 के लिए IIS URL पुनर्लेखन मॉड्यूल 2.1 + आपका मित्र हो सकता है। मॉड्यूल को IIS URL रीराइट से डाउनलोड किया जा सकता है । URL रिवाइटर मॉड्यूल और URL रिवाइटर मॉड्यूल 2.0 कॉन्फ़िगरेशन संदर्भ का उपयोग करके मॉड्यूल का उपयोग करने का तरीका बताएं।

एक बार मॉड्यूल स्थापित हो जाने के बाद, आप IIS प्रबंधक का उपयोग करके एक होस्ट वाइड रीडायरेक्ट बना सकते हैं। चुनें URL पुनर्लेखन , नियम (रों) ... जोड़ें , और रिक्त नियम

नाम:
HTTPS पर पुनर्निर्देशित

URL
अनुरोधित URL से मिलान करें : Matches the Pattern
उपयोग करना: Wildcards
पैटर्न: *
मामले को अनदेखा करें: जाँच की गई

शर्तें
तार्किक समूहन: Match Any
स्थिति इनपुट : {HTTPS}
यदि इनपुट स्ट्रिंग की जाँच करें: Matches the Pattern
पैटर्न: OFF
मामले को अनदेखा करें: जाँच की
शर्तों पर ट्रैक कैप्चर समूह: जाँच नहीं

सर्वर चर
रिक्त छोड़ें।

क्रिया
क्रिया प्रकार: Redirect
रीडायरेक्ट URL: https://{HTTP_HOST}{REQUEST_URI}
क्वेरी स्ट्रिंग जोड़ें: पुनर्निर्देशित प्रकार की जाँच नहीं की गई
: Permanent (301)

नियम लागू करें और IISReset चलाएं (या IIS प्रबंधक में पुनरारंभ करें) पर क्लिक करें

वैकल्पिक रूप से, मॉड्यूल को स्थापित करने के बाद आप ApplicationHost.config फ़ाइल को निम्नानुसार संशोधित कर सकते हैं:

<system.webServer>
  <rewrite>
    <globalRules>
      <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" ignoreCase="true" negate="false" />
        <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
          <add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
      </rule>
    </globalRules>
  </rewrite>
</system.webServer>

क्या यह स्थायी 301 रीडायरेक्ट के लिए काम करेगा?
userSteve

@userSteve उपरोक्त उत्तर के अनुसार, आप पुनर्निर्देशित प्रकार का चयन कर सकते हैं।
15:77 बजे BE77Y

@userteve वूप्स, हाँ, आपको Redirect टाइप को 301 में बदलने और समान परिणाम प्राप्त करने में सक्षम होना चाहिए
sippybear

1
@sippybear एक और सवाल - क्या इनपुट = "{HTTPS}" का मतलब है? क्या यह {HTTP} होना चाहिए क्योंकि इनपुट और HTTP आउटपुट होगा?
यूजरवेट

3
{HTTPS} एक चर है जिसे आप यह जानने के लिए क्वेरी करते हैं कि क्या कनेक्शन सुरक्षित है। आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/… इस मामले में, हम जाँच कर रहे हैं कि क्या "HTTPS}" बंद "है, और उसके बाद यदि रिडक्शन हो रहा है तो यह है
सिप्पीबर

1

मेरा शोध बताता है कि यह पुनर्निर्देशित करने का एक बेहतर तरीका हो सकता है:

<rewrite>
    <rules>
        <rule name="http to https" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
    </rules>
</rewrite>

1
क्या आप बता सकते हैं कि यह बेहतर क्यों है?
userSteve

मुझे खेद है कि मैं इसे अपने आप को नहीं समझा सकता, बस कुछ ही जगहों पर पढ़ा जा सकता है जो वाक्यविन्यास बेहतर है।
फॉल एंजेल

1
क्या आपके पास कोई स्रोत है?
डैंगल

1
यह बिल्कुल वैसा ही नियम है जैसा कि serverfault.com/a/893804/7184 में है , लेकिन रेगुलर एक्सप्रेशन और मैच ऑल ग्रुपिंग का उपयोग करके लिखा जाता है। एक उल्टा यह हो सकता है कि नियम की अभिव्यक्ति नियम की चूक का उपयोग करती है और निडर है।
bzlm

मैं IIS 10 पर हूं और चयनित उत्तर मेरे लिए काम नहीं किया। किसी कारण से IIS सिंटैक्स को मान्य नियम के रूप में मान्यता नहीं देता है। मैंने आपका कोड अंदर डाला और तुरंत काम किया, साझा करने के लिए धन्यवाद।
जॉर्डन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.