सम्‍मिलित एसएसएल सहित mod_rewrite के साथ बल HTTPS


9

मुझे एक एसएसएल टर्मिनेटिंग लोड बैलेंसर से कुछ ट्रैफ़िक मिल रहा है- जिस स्थिति में यह HTTP में पोर्ट 80 पर http_x_forwarded_proto= "" के साथ आता है

मैं एक mod_rewrite नियम चाहता हूं जो केवल सीधे HTTPS ट्रैफ़िक या अग्रेषित HTTPS ट्रैफ़िक की अनुमति देता है।

मेरे पास अभी तक यह है:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

लेकिन मुझे मिल रहा है

रेवेरिटकॉन्ड: खराब फ्लैग डेलिमिटर

त्रुटि।

मुझे यह काम करने के लिए सही करने की क्या आवश्यकता है, और क्या यह सबसे अच्छा तरीका है?

जवाबों:


16

समस्या "!" के बाद व्हाट्सएप थी:

कार्य संस्करण:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

मुश्किल...


मुझे यकीन नहीं है कि अगर एसएसएल को लोड किया जाता है, तो एचटीटीपीएस चर कभी भी सेट हो जाएगा। वैसे भी मेरी स्थिति में यह पहला परीक्षण के बिना ठीक काम किया।
wurtel

1

यदि आपके पास लोड बैलेंसर हमेशा सर्वर से संचार करते समय एसएसएल का उपयोग करता है, तो आपको पहले चेक को छोड़ना होगा क्योंकि यह हमेशा सही होगा। (यदि आप लोड बैलेंसर पर SSL लोड कर रहे हैं, तो पहली पंक्ति हमेशा सच होती है, जब तक कि कोई व्यक्ति एसएसएल का उपयोग करके सीधे आपके सर्वर को हिट नहीं करता है, उस स्थिति में यह गलत होगा और अनुप्रेषित करने की कोशिश नहीं X-Forwarded-Protoकरेगा क्योंकि गायब होगा।)

जब से हम हमेशा SSL पर ELB और वेबसर्वर के बीच संचार कर रहे हैं, तब से मैं जिस कोड का उपयोग कर रहा हूं:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.