HeadlinesBriefing HeadlinesBriefing.com

SSH और Nginx के साथ स्व-होस्टेड HTTP टनल

Hacker News •
×

एक मित्र आपके कार्य-प्रगति ब्लॉग पोस्ट को प्रूफरीड करना चाहता है, लेकिन इसका पूर्वावलोकन केवल localhost:8080 पर चलता है। कई उपकरण मदद कर सकते हैं। कुछ वाणिज्यिक सेवा के रूप में चलते हैं, जैसे ngrok या Cloudflare Quick Tunnels。 कुछ स्व-होस्टेबल हैं लेकिन एक विशिष्ट क्लाइंट की आवश्यकता होती है, जैसे frp या localtunnel。 कुछ केवल एक साधारण SSH क्लाइंट की आवश्यकता होती है लेकिन एक विशिष्ट SSH सर्वर पर निर्भर करते हैं, जैसे sish। आइए केवल Open SSH और nginx के साथ एक स्व-होस्टेड समाधान लागू करें!

पहले, हम एक दूरस्थ सर्वर पर एक पोर्ट से आपके स्थानीय सेवा तक कनेक्शन फॉरवर्ड करते हैं: `$ ssh -N -R 0:localhost:8080 web02.luffy.cx`। जब आप दूरस्थ पोर्ट के रूप में `0` निर्दिष्ट करते हैं, तो सर्वर एक मुक्त पोर्ट आवंटित करता है, जैसे 41535। फिर, हम nginx को कॉन्फ़िगर करते हैं ताकि यह `https://p41535.ssh.luffy.cx` से अनुरोधों को `http://127.0.0.1:41535` तक प्रॉक्सी करे, जिसमें एक सर्वर ब्लॉक का उपयोग किया जाता है जो डोमेन नाम में पोर्ट से मेल खाता है।

हमें `*.ssh.luffy.cx` के लिए DNS रिकॉर्ड जोड़ने की भी आवश्यकता है और Let’s Encrypt के माध्यम से एक वाइल्डकार्ड सर्टिफिकेट प्राप्त करने की आवश्यकता है। मेरे मामले में, Nix OS स्वचालित रूप से सर्टिफिकेट प्राप्त करता है। एक्सेस कंट्रोल ngx_http_secure_link_module के उपयोग से प्राप्त किया जाता है, जो एक मान के सेट पर हैश की गणना करता है, जिसमें एक रहस्य भी शामिल होता है, और इसे अनुरोध से हैश के साथ तुलना करता है। हैश base64-एन्कोड किया जाता है और URL में एक उपयोगकर्ता नाम के रूप में रखा जाता है, साथ ही इसकी समाप्ति टाइमस्टैम्प के साथ।

मुख्य इकाइयाँ: कंपनियाँ: Cloudflare, Let's Encrypt | स्थान: localhost:8080, web02.luffy.cx, p41535.ssh.luffy.cx, ssh.luffy.cx, acme.luffy.cx, Route 53

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित