विंडोज होस्ट फ़ाइल में पोर्ट नंबर का उपयोग करना


190

टीमव्यूअर को स्थापित करने के बाद, मैंने वैम्पेरवर पोर्ट को 8080 में बदल दिया है, इसलिए पता है http://localhost:8080.

C: \ WINDOWS \ system32 \ driver \ etc \ पर स्थित होस्ट फ़ाइल के लिए, मैंने नीचे भी परिवर्तन किया है

इससे पहले
127.0.0.1 www.example.com

उपरांत
127.0.0.1:8080 www.example.com

जब मैं www.example.com पर पहुंचता हूं, तो यह मेरे वैंपसर को रीडायरेक्ट नहीं करता है, मैं इसे कैसे ठीक कर सकता हूं?


उचित अनुरोध के लिए http अनुरोधों को अग्रेषित करने के लिए आपको NGNIX या Apache HTTP सर्वर की आवश्यकता है -> जो विशेष पोर्ट को सुनता है (या CNAME के ​​साथ जो होस्टिंग कंपनी प्रदान करता है)
मूसा


शायद इस की समीक्षा करें और स्वीकार किए गए उत्तर को netsh उत्तर पर स्विच करें? मैं यहाँ समाप्त हुआ जब यह पता लगाने की कोशिश की जा रही है कि विंडोज 10 पर स्थानीय रूप से मेरे docker छवियों के लिए .test डोमेन कैसे मैप करें, और netsh उत्तर ने एक आकर्षण की तरह काम किया!
जेरेम

सवाल यह है कि क्या आप एक पूरे पोर्ट (?) या पूरे पोर्ट 80 (उस होस्ट के) को 8080 पोर्ट करने की कोशिश कर रहे हैं? अधिकांश उत्तर यहां दिए गए हैं कि कैसे रीडायरेक्ट करें (या कम से कम पुनर्निर्देशित करने का प्रयास करें ...; एक होस्ट 80 के पोर्ट 8080 को आपके "लोकलहोस्ट" में पोर्ट करने के लिए। उदाहरण: https://www.example.com8080 बंदरगाह जाना चाहिए? या डिफ़ॉल्ट 443 पर? (जैसा कि यह होना चाहिए) जिसका अर्थ है: क्या आप चाहते हैं कि आपके लोकलहोस्ट के 8080 को पोर्ट करने के लिए एक https भी पुनर्निर्देशित किया जाए? या आप बिल्कुल भी परवाह नहीं करते हैं कि यह पुनर्निर्देशित कहाँ होगा?
इलियास इलियाडिस

जवाबों:


195

hostsफ़ाइल (विंडोज पर और साथ ही पर यूनिक्स सिस्टम) केवल होस्ट नाम समाधान के लिए है। आप वहां पोर्ट नंबर नहीं डाल सकते हैं, और जेनेरिक ओएस-स्तर कॉन्फ़िगरेशन के साथ आप जो चाहते हैं, वह करने का कोई तरीका नहीं है - ब्राउज़र वह है जो पोर्ट को चुनने के लिए चयन करता है।

इसलिए बुकमार्क या ऐसा कुछ उपयोग करें।
(कुछ फ़ायरवॉल / रूटिंग सॉफ़्टवेयर आउटबाउंड पोर्ट पुनर्निर्देशन की अनुमति दे सकते हैं, लेकिन यह वास्तव में इसके लिए एक आकर्षक विकल्प की तरह नहीं है।)


6
बुकमार्क का उपयोग कैसे करें, क्या आप हमें इस बारे में एक लिंक या कुछ प्रलेखन या ट्यूटोरियल का नेतृत्व कर सकते हैं
adham dwikat

@Jereme: आपको यह बताना चाहिए कि ओपी को, मैं इसके बारे में कुछ नहीं कर सकता
Mat

1
@ यह अच्छा होगा, है ना? मैं सिर्फ उन लोगों को चाहता हूं जो इसे देखने के लिए थोड़ा नीचे स्क्रॉल करते हैं और इसे शॉट देते हैं। मैं यहाँ समाप्त हुआ जब यह पता लगाने की कोशिश की जा रही है कि विंडोज 10 पर स्थानीय रूप से मेरे docker छवियों के लिए .test डोमेन कैसे मैप करें, और netsh उत्तर ने एक आकर्षण की तरह काम किया!
जेरेमी

169

आप जो चाहते हैं उसे फ़िडलर 2 एप्लिकेशन के माध्यम से होस्ट्स फ़ाइल को संशोधित करके प्राप्त किया जा सकता है ।

इन कदमों का अनुसरण करें:

  1. Fiddler2 स्थापित करें

  2. Fiddler2 मेनू पर नेविगेट करें: - उपकरण > HOSTS .. (चयन करने के लिए क्लिक करें)

  3. इस तरह एक लाइन जोड़ें: -

    localhost:8080 www.mydomainname.com

  4. फ़ाइल को सहेजें और फिर www.mydomainname.comब्राउज़र में चेकआउट करें ।


34
यह एक बुरा उपाय है। आपको हर समय फ़िडलर चलाने की आवश्यकता है।
जेम्स हक्काबोन

49
@JamesHuckabone: क्या आपके पास एक बेहतर उपाय है? हमें अच्छा लगेगा!
रजत गुप्ता

16
जब मैं इस पद्धति का उपयोग करता हूं तो मुझे त्रुटि 400 खराब अनुरोध मिलता है
सैम

3
यह अब काम नहीं कर रहा है। इसे fiddler2 और fiddler4
basher

1
@ बशर यू अभी भी इसे फिडलर के रूल्स पर स्क्रिप्ट कर सकते हैं। निश्चित रूप से। फ़िडलर पर होस्ट्स की कार्यपद्धति विंडोज होस्ट्स फाइल नहीं है, यह उस नाम का एक मनोरंजन है जिससे उन्हें काम करना आसान हो जाता है। ऑटोरेस्पोन्डर्स की तरह है, क्या आप इसे सीधे स्क्रिप्टिंग कर सकते हैं का सिर्फ एक सबसेट है। यदि आप मेनू के साथ कुछ नहीं कर सकते हैं, तो इसे स्क्रिप्ट करें।
m3nda

157

मैंने विंडोज शामिल नेटवर्किंग टूल का उपयोग करके इसे प्राप्त करने में कामयाब रहा netsh

जैसा कि मैट बताते हैं: मेजबान फ़ाइल केवल होस्ट नाम समाधान के लिए है, इसलिए दोनों के संयोजन ने मेरे लिए चाल चली।

उदाहरण


अवलोकन

example.app:80
 |                           <--Link by Hosts File
 +--> 127.65.43.21:80
       |                     <--Link by netsh Utility
       +--> localhost:8081

क्रिया

  • पर अपना सर्वर शुरू किया localhost:8081
  • मेरे "स्थानीय DNS" को एक नई लाइन के रूप में होस्ट्स फ़ाइल में जोड़ा गया
    • 127.65.43.21 example.app
      • नेटवर्क में कोई भी मुफ्त पता 127.0.0.0/8( 127.x.x.x) इस्तेमाल किया जा सकता है।
      • नोट: मैं मान रहा हूं कि127.65.43.21:80किसी अन्य सेवा द्वारा कब्जा नहीं किया गया है।
      • आप के साथ जाँच कर सकते हैं netstat -a -n -p TCP | grep "LISTENING"
  • नेट्स कमांड उपयोगिता के साथ निम्नलिखित नेटवर्क कॉन्फ़िगरेशन को जोड़ा गया
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • अब मैं सर्वर तक पहुँच सकता हूँ http://example.app

नोट्स:
- इन कमांड / फ़ाइल संशोधनों को व्यवस्थापक अधिकारों के साथ निष्पादित किया जाना चाहिए

- netsh portproxy को केवल v4tov4 का उपयोग करने के लिए ipv6 पुस्तकालयों की आवश्यकता है , आमतौर पर उन्हें डिफ़ॉल्ट रूप से शामिल किया जाएगा, अन्यथा निम्नलिखित कमांड का उपयोग करके उन्हें स्थापित करें:netsh interface ipv6 install


कमांड के साथ आपके द्वारा जोड़ी गई प्रविष्टि देख सकते हैं :

netsh interface portproxy show v4tov4

आप निम्न आदेश के साथ प्रविष्टि को हटा सकते हैं :

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


संसाधनों के लिए लिंक:


यह मेरे लिए काम नहीं कर रहा है। आपने जो लिंक दिखाया है उसमें लिखा है "इसके अलावा आप कनेक्टड्रेस के रूप में 127.0.0.1 का उपयोग नहीं कर सकते हैं।"
डॉन बॉक्स

@ डोनबॉक्स: यदि आप अपने सेटअप पर कुछ और विवरण प्रदान करते हैं तो शायद मैं आपकी मदद कर सकता हूं। कनेक्ट एड्रेस के रूप में 127.0.0.1 का उपयोग करना मूल रूप से प्रस्तुत मामले के परिदृश्य में आवश्यकता है क्योंकि सर्वर ने स्थानीयहोस्ट पर शुरू किया था , जैसा कि डिफ़ॉल्ट रूप से कई अन्य कार्यक्रमों द्वारा किया जाता है। यदि आप किसी अन्य पते पर शुरू कर सकते हैं, तो आपको पूरे पोर्ट अग्रेषण तंत्र की आवश्यकता नहीं है, आपको बस मेजबान फ़ाइल को संशोधित करने की आवश्यकता है ... शायद, जैसा कि यहां विस्तृत है , आपको आईपीवी 6 प्रोटोकॉल स्थापित नहीं मिला है: स्थापित करने के लिए निम्नलिखित कमांड का उपयोग करें उन्हें:netsh interface ipv6 install
पाऊ कोमा रामिरेज़

13
यह स्वीकृत उत्तर होना चाहिए क्योंकि उपकरण पहले से ही मेरी बेस विंडो 10 में स्थापित हैं और यह वही है जो मुझे चाहिए था। मैं अपाचे और mod_proxy को स्थापित करने पर विचार कर रहा था लेकिन यह एक बेहतर समाधान है।
मैक्स यंग

1
मेरे लिए काम नहीं करता है। Netsh पता अग्रेषित करने के लिए लगता है, लेकिन पोर्ट नहीं।
Steph643

2
मैं डॉकर्स पोर्टेनेर का उपयोग करता हूं। यह पोर्ट 9000 पर लोकलहोस्ट का उपयोग करता है। ऊपर दिए गए आदेश को संशोधित करने के बाद, मैं पते पर पोर्ट निर्दिष्ट किए बिना portainer.local का उपयोग करता हूं। मैं सबसे पहले अपनी मेजबानों की फाइल में 127.0.0.1मैच के पते के रूप में जोड़ता portainer.localहूं। फिर मैं दौड़ता हूं: netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=9000 connectaddress=127.0.0.1 इसे चलाने के लिए cmd / powerhell में हिट कुंजी दर्ज करें। इसके बाद, टाइप करके netsh से बाहर निकलें exit। ब्राउजर में, टाइपिंग http://portainer.localअब मुझे उस जगह ले जाती है, जहां मैं करता http://localhost:9000था। यह मेरे लिए एक आकर्षण की तरह काम करता था।
प्रभावती

14

Fiddler2 -> नियम -> कस्टम नियम

इसके बाद अगले स्क्रिप्ट में अंत में फंक्शन OnBeforeRequest खोजें:

if (oSession.HostnameIs("mysite.com")){
    oSession.host="localhost:39901";
}

वास्तव में फ़िडलर पोर्ट 80 पर वेबसर्वर नहीं चलने की अपेक्षा से बहुत अधिक शक्तिशाली है, या स्काइप भी ... मोनो के साथ लिनक्स में विंडोज बेहतर तरीके से काम करता है, कम से कम कैप्चरिंग फीचर्स में, क्यूज़ लिनक्स सीएलआरएल से आईनेट का उपयोग नहीं करता है। यह Fiddler पर चीजों को करने का एक अच्छा तरीका है, यह 1 फ़ाइल के साथ निर्यात करने योग्य है।
m3nda

3

सबसे सरल तरीका एर्गो को आपके रिवर्स प्रॉक्सी के रूप में उपयोग कर रहा है: https://github.com/cristianoliveira/ergo

आप अपनी सेवाओं और इसके आईपी को निर्धारित करते हैं: इसे आप के लिए पोर्ट और एर्गो मार्गों :)।

आप उसी का उपयोग करके प्राप्त कर सकते हैं nginxया apacheआपको उन्हें कॉन्फ़िगर करने की आवश्यकता होगी।


3
एर्गो आपके द्वारा काम किया गया प्रोजेक्ट (उपयोगकर्ता नाम के आधार पर) प्रतीत होता है। यदि ऐसा है, तो आपको अधिक स्पष्ट रूप से संकेत देना चाहिए कि आप उस उत्पाद से संबद्ध हैं। देखें इस जवाब के साथ-साथ अन्य उत्तर।
फ्रैंक टैन

2

-आप नेटवर्क में किसी भी मुफ्त पते का उपयोग कर सकते हैं 127.0.0.0/8, मेरे मामले में अजगर फ्लास्क के लिए इसकी आवश्यकता है और यही मैंने किया है: इस लाइन को होस्ट्स फ़ाइल में जोड़ें (आप पा सकते हैं कि यह विंडोज़ के तहत है: C: \ Windows \ System32 \ ड्राइवर / आदि):

127.0.0.5 flask.dev
  • सुनिश्चित करें कि पोर्ट डिफ़ॉल्ट पोर्ट "80" है मेरे मामले में यह वही है जो अजगर फ्लास्क में है: app.run("127.0.0.5","80")

  • अब अपना कोड चलाएं और ब्राउज़ करें flask.dev


1

अगर यह हो रहा है कि आपके पास लोकलहोस्ट पर एक और सर्वर चल रहा है और आप इस नए सर्वर को एक अलग स्थानीय होस्टनाम देना चाहते हैं http://teamviewer/

मुझे लगता है कि जो आप वास्तव में देख रहे हैं वह वर्चुअल होस्ट्स की कार्यक्षमता है। मैं अपाचे का उपयोग करता हूं इसलिए मुझे नहीं पता कि अन्य वेब डेमॉन इसका समर्थन कैसे करते हैं। शायद इसे अलियास कहा जाता है। यहाँ अपाचे प्रलेखन है:

अपाचे वर्चुअल होस्ट्स उदाहरण हैं


1

कनेक्टड्रेस के साथ नेटश का उपयोग करना = 127.0.0.1 ने मेरे लिए काम नहीं किया।

इंटरनेट पर हर जगह देखने के बावजूद मुझे इसका समाधान नहीं मिला, जो मेरे लिए इसे हल करता है, जो कि कनेक्टड्रेस = 127.xxx (यानी किसी भी 127. ipv4 पता, बस 127.0.0.1 का उपयोग नहीं करना था) क्योंकि यह स्थानीय स्तर पर वापस लिंक करने के लिए प्रकट होता है वही लेकिन प्रतिबंध के बिना, ताकि लूपबैक नेटश में काम करे।


मेरा सुझाव है कि आप पहले और अंतिम पैराग्राफ को हटा दें। बस यह बताएं कि मौजूदा समाधान काम नहीं करते थे और आपको एक और मिल गया था। अन्यथा आपका उत्तर एक टिप्पणी की तरह दिखता है, इसलिए लोग इसे "उत्तर नहीं" के रूप में चिह्नित कर सकते हैं और इसे हटा दिया जाएगा।
स्टेसीगर्ल


0

उचित अनुरोध -> जो विशेष पोर्ट को सुनता है (या इसे CNAME जो होस्टिंग कंपनी प्रदान करता है) के साथ http अनुरोधों को अग्रेषित करने के लिए एक प्रॉक्सी सर्वर के रूप में NGNIX या Apache HTTP सर्वर की आवश्यकता है। यह सबसे शक्तिशाली समाधान है और यह केवल एक बहुत ही आसान तरीका है कि नए उप-डोमेन जोड़ना, या जब DNS रिकॉर्ड्स सर्वर पर इंगित किए जाते हैं तो नए डोमेन को स्वचालित रूप से जोड़ना।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.