Google Compute Engine पर HTTP (S) लोड बैलेंसर का उपयोग करते समय सभी HTTP ट्रैफ़िक को HTTPS पर पुनर्निर्देशित करें


18

मेरे पास 2 वैश्विक अग्रेषण नियम (HTTP और HTTPS) के साथ Google कम्प्यूट इंजन पर HTTP / HTTPS लोड बैलेंसिंग है। प्रत्येक नियम HTTP के प्रोटोकॉल के साथ बैक-एंड सेवा की ओर इशारा करता है।

मैं सभी अनुरोधों http://*पर जाना चाहता हूं https://*

चूंकि लोड बैलेंसर HTTP पर बैक-एंड सेवाओं के लिए बात करता है, मुझे नहीं लगता कि मैं ए भेजने के लिए बैक-एंड सेवा पर नगनेक्स प्राप्त कर सकता हूं 301

मैंने Google गणना पर एक दर्जन छोटे ट्वीक्स की कोशिश की है और वे सभी Google गणना के साथ समाप्त होते हैं 502

मुझे यकीन है कि किसी और ने इसे पहले सेट किया है। किसी भी सुझाव या सही दिशा में संकेत बहुत सराहना की है।


HTTP से HTTPS पुनर्निर्देशन (SSL का उपयोग करके) वर्तमान में HTTP / HTTPS लोड बैलेंसर के माध्यम से समर्थित नहीं है। पुनर्निर्देशन को आपके वेब सर्वर (Apache, nginx आदि) पर कॉन्फ़िगर करने की आवश्यकता है। इसके साथ ही कहा, कृपया कंप्‍यूटर इंजन सार्वजनिक निर्गम ट्रैकर ( code.google.com/p/google-compute-engine/issues/list ) पर इसके लिए एक सुविधा अनुरोध दर्ज करने में संकोच न करें ।
फैजान

धन्यवाद; एक समस्या खोली: code.google.com/p/google-compute-engine/issues/…
Ryan Leckey

ठीक है, मैंने इंजीनियरिंग के लिए सुविधा अनुरोध को अग्रेषित कर दिया है।
Faizan

@ फैज़ान - क्या कोई समयरेखा है जब यह सुविधा उपलब्ध होगी? इस सुविधा का अनुरोध किए हुए लगभग 2 साल हो चुके हैं। वर्कअराउंड clunky है।
टेलोंक्स

इस अनुरोध के लिए नया लिंक जारी कर रहा है etetracker.google.com/issues/35904733 (हालांकि पुराना अभी भी पुनर्निर्देशित है)।
डैनियल कॉम्पटन

जवाबों:


19

हमारे पास HTTP / HTTPS लोड बैलेंसर का उपयोग करके एक समान सेटअप है और हम HTTPS को मजबूर करने में कामयाब रहे। यह सीधे लोड बैलेंसर से संभव नहीं है लेकिन आप इसे अपने बैकएंड सेवा से सेट कर सकते हैं। Google क्लाउड लोड बैलेंसर X-फॉरवर्ड-प्रोटो http हेडर को या तो मान http या https के साथ सेट करेगा। आप अपनी बैकएंड सेवा (हमारे मामले में वार्निश में यह काम कर सकते हैं, लेकिन यह नेगनेक्स में भी किया जा सकता है) और यदि मान http है तो आप 301 वापस भेज देते हैं।


8
धन्यवाद! if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
पश्चात के लिए

आपको 426301 के बजाय HTTP अपग्रेड हेडर का उपयोग करना चाहिए । और पढ़ें: stackoverflow.com/questions/17873247/…
विक्रम तिवारी

3
मैं विक्रम से असहमत हूं, आपको एसईओ प्रयोजनों के लिए 301 का उपयोग करना चाहिए। यदि आप एक 4xx परिवार कोड वापस करते हैं तो आपका पेजरेंक पुराने http से https तक इंगित करने वाले लिंक से नहीं बहेगा। 301 अपेक्षित कोड है, कम से कम यदि आप अपनी साइट पर एसईओ के बारे में परवाह करते हैं।
सिरिल

1
@VikramTiwari, पोस्ट उत्तर वास्तव में बताता है: "यह http: // से https: // पर अपग्रेड करने के बारे में भी नहीं है"
रामबेटिनो

1

मैंने आज इस समस्या का सामना किया और टीसीपी लोड संतुलन का उपयोग करके इसे हल करने में सक्षम था। यदि आपको HTTP / HTTPS विशिष्ट लोड बैलेंसर विकल्पों की आवश्यकता नहीं है, तो शायद आप पोर्ट 80 और 443 दोनों को ट्रैफ़िक प्राप्त करने के लिए TCP लोड बैलेंसर (कोई SSL) का उपयोग कर सकते हैं। पोर्ट 80 से ट्रैफ़िक के लिए, आप 301 वापस भेज सकते हैं।


1
tcp लोड संतुलन पोर्ट 80 doc के लिए अनुमत नहीं है > टीसीपी प्रॉक्सी लोड बैलेंसिंग निम्नलिखित बंदरगाहों का समर्थन करता है: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883,
5832
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.