Windows ana bilgisayar dosyasında bağlantı noktası numarasını kullanma


190

TeamViewer'ı yükledikten sonra wampserver portunu 8080 olarak değiştirdim, böylece adres http://localhost:8080.

C: \ WINDOWS \ system32 \ drivers \ etc \ konumunda bulunan ana bilgisayar dosyası için de aşağıdaki gibi değişiklik yaptım

ÖNCE
127.0.0.1 www.example.com

SONRA
127.0.0.1:8080 www.example.com

Www.example.com sitesine eriştiğimde, wampserver'ime yönlendirmiyor, nasıl düzeltebilirim?


Http isteklerini uygun bağlantı noktasına yönlendirmek için bir proxy sunucusu olarak NGNIX veya Apache HTTP sunucusuna ihtiyacınız vardır -> belirli bağlantı noktasını dinler (veya Hosting şirketi sağlayan CNAME ile yapın)
Musa


Belki bunu gözden geçirin ve kabul edilen cevabı netsh cevabına geçirin? Burada Windows 10'da .test alanlarını docker görüntülerime yerel olarak nasıl eşleştirmeye çalıştığımı buldum ve netsh cevabı bir cazibe gibi çalıştı!
Jereme

Soru şudur: Tüm bir ana bilgisayarı tek bir bağlantı noktasına (?!) Veya yalnızca 80 numaralı bağlantı noktasını (bu ana bilgisayarın) 8080 numaralı bağlantı noktasına yönlendirmeye mi çalışıyorsunuz? Buradaki yanıtların çoğu, bir ana bilgisayarın 80 numaralı bağlantı noktasını "localhost" un 8080 numaralı bağlantı noktasına yeniden yönlendirmek (veya en azından ... Örnek: https://www.example.com8080 numaralı bağlantı noktasına mı gitmeli? veya varsayılan 443'e mi? (olması gerektiği gibi) Bu da şu anlama gelir: https'nin ayrıca yerel ana makinenizin 8080 bağlantı noktasına yönlendirilmesini ister misiniz? Yoksa bunun nereye yönlendirileceğini hiç umursamıyor musunuz?
ilias iliadis

Yanıtlar:


195

hostsDosyası (Windows üzerinde hem de Unix benzeri sistemlerde) sadece ana bilgisayar adı çözümlemesi içindir. Bağlantı noktası numaralarını oraya yerleştiremezsiniz ve genel işletim sistemi düzeyinde yapılandırma ile istediğinizi yapmanın bir yolu yoktur - tarayıcı, bağlantı noktasını seçecek olanı seçer.

Bu yüzden yer imleri veya bunun gibi bir şey kullanın.
(Bazı güvenlik duvarı / yönlendirme yazılımı, giden bağlantı noktası yeniden yönlendirmesine izin verebilir, ancak bunun için çekici bir seçenek gibi görünmüyor.)


6
yer imleri nasıl kullanılır, bizi bir bağlantıya veya
bununla

@Jereme: OP'ye söylemelisin, bu konuda hiçbir şey yapamam
Mat

1
@Mat Çok iyi olurdu, değil mi? Sadece bunu gören diğerlerinin biraz aşağı inmesini ve denemesini bilmelerini istiyorum. Burada Windows 10'da .test alanlarını docker görüntülerime yerel olarak nasıl eşleştirmeye çalıştığımı buldum ve netsh cevabı bir cazibe gibi çalıştı!
Jereme

170

Ne istiyorsun Fiddler 2 uygulaması ile hosts dosyasını değiştirerek elde edilebilir .

Bu adımları takip et:

  1. yükleme Fiddler2

  2. Fiddler2 menüsüne gidin: - Araçlar > HOSTS .. (Seçmek için tıklayın)

  3. Bunun gibi bir satır ekleyin: -

    localhost:8080 www.mydomainname.com

  4. Dosyayı kaydedin ve ardından www.mydomainname.comtarayıcıda ödeme yapın .


34
Bu kötü bir çözüm. Her zaman Fiddler'ı çalıştırmanız gerekir.
James Huckabone

49
@JamesHuckabone: Daha iyi bir çözümünüz var mı? biz çok isteriz!
Rajat Gupta

16
Bu yöntemi kullandığımda Hata 400 Hatalı İstek alıyorum
Sam

3
bu artık işe yaramıyor gibi görünüyor. Hem fiddler2 hem de fiddler4 ile denedim
basher

1
@basher U hala Fiddler's Rules.js'de yazabilir. Fiddler'daki ana bilgisayar işlevselliği Windows ana bilgisayar dosyaları DEĞİLDİR, bu adların üzerinde çalışılmasını kolaylaştırmak için bir rekreasyon. Autoresponders gibi, doğrudan komut dosyası ne yapabilirsiniz sadece bir alt kümesidir. Menülerle bir şey yapamıyorsanız, komut dosyasını yazın.
m3nda

159

Bunu Windows dahil Ağ aracını kullanarak başarmayı başardım netsh.

Mat'ın belirttiği gibi: hosts dosyası yalnızca ana bilgisayar adı çözümlemesi içindir, bu nedenle ikisinin bir kombinasyonu bana hile yaptı.

Misal


genel bakış

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

Hareketler

  • Sunucumu açtım localhost:8081
  • Hosts dosyasına "yerel DNS" i yeni bir satır olarak ekledim
    • 127.65.43.21 example.app
      • Ağdaki herhangi bir boş adres 127.0.0.0/8( 127.x.x.x) kullanılabilir.
      • Not:127.65.43.21:80 Başka bir servis tarafından işgal edilmediğinivarsayıyorum.
      • İle kontrol edebilirsiniz netstat -a -n -p TCP | grep "LISTENING"
  • netsh komut yardımcı programı ile aşağıdaki ağ yapılandırmasını ekledi
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Artık sunucuya şu adresten erişebilirim: http://example.app

Notlar:
- Bu komutların / dosya değişikliklerinin Yönetici haklarıyla yürütülmesi gerekir

- netsh portproxy, yalnızca v4tov4 kullanmak için bile ipv6 kitaplıklarına ihtiyaç duyar, genellikle varsayılan olarak dahil edilirler, aksi takdirde aşağıdaki komutu kullanarak yükleyin:netsh interface ipv6 install


Sen edebilirsiniz girişine bakın size komutla ekledik:

netsh interface portproxy show v4tov4

Sen edebilirsiniz girişi kaldırmak şu komutla:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Kaynaklara Bağlantılar:


Bu benim için çalışmıyor. Gösterdiğiniz bağlantıda "Ayrıca 127.0.0.1'i connectaddress olarak kullanamazsınız" yazıyor.
Don Box

@DonBox: Kurulumunuz hakkında biraz daha ayrıntı verirseniz size yardımcı olabilirim. Sunucu varsayılan olarak diğer birçok programda olduğu gibi localhost'ta başladığı için 127.0.0.1'i bağlantı adresi olarak kullanmak temel olarak sunulan vaka senaryosundaki gereksinimdir . Eğer bütün port yönlendirme mekanizmasını gerekmez başka adreste başlayabilir, sadece olarak, belki ... hosts dosyasını değiştirmek gerekebilir burada ayrıntılı , sende olmayan ipv6 protokol yüklü: yüklemek için aşağıdaki komutu kullanın onları:netsh interface ipv6 install
Pau Coma Ramirez

13
Bu araçlar, temel windows 10 kurulumumda zaten kurulu olduğu için kabul edilen cevap olmalı ve tam da ihtiyacım olanı yapıyor. Apache ve mod_proxy yüklemeyi düşünüyordum ama bu çok daha iyi bir çözüm.
Max Young

2
Benim için çalışmıyor. Netsh adresi iletiyor gibi görünüyor, ama limanı değil.
steph643

2
Docker'in portainer'ını kullanıyorum. Bağlantı noktası 9000'de localhost kullanır. Yukarıdaki komutu değiştirerek, adreste bir bağlantı noktası belirtmek zorunda kalmadan portainer.local kullanıyorum. İlk 127.0.0.1olarak, portainer.localhosts dosyamda eşleşecek adres olarak ekleyin . Sonra çalıştırıyorum: netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=9000 connectaddress=127.0.0.1 Çalıştırmak için cmd / powershell'de enter tuşuna basın. Bundan sonra netsh komutunu yazarak çıkın exit. Tarayıcıda, http://portainer.localşimdi yazmak beni http://localhost:9000alıştığım yere götürüyor . Bu benim için bir cazibe gibi çalıştı.
EffectiX

14

Fiddler2 -> Kurallar -> Özel Kurallar

sonra sonunda sonraki komut dosyasına koymak OnBeforeRequest işlevini bulun:

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

Gerçekten de Fiddler, 80 numaralı bağlantı noktasında veya hatta Skype'ta bir web sunucusu çalıştırmamayı beklemekten çok daha güçlü ... Windows'ta Mono ile Linux'tan daha iyi çalışıyor, en azından yakalama özellikleri, çünkü Linux, CLRL'den Inet kullanmıyor. Bu, Fiddler'da bir şeyler yapmanın daha güzel bir yoludur, çünkü 1 dosya ile dışa aktarılabilir.
m3nda

3

En basit yol, Ergo'yu ters proxy'niz olarak kullanmaktır: https://github.com/cristianoliveira/ergo

Hizmetlerinizi ve IP: PORT ayarını yaparsınız ve ergo sizin için yönlendirir :).

Aynı işlemi kullanarak nginxveya başarabilirsiniz, apacheancak bunları yapılandırmanız gerekir.


4
Ergo üzerinde çalıştığınız bir proje gibi görünüyor (kullanıcı adına göre). Bu durumda, bu ürüne bağlı olduğunuzu daha açık bir şekilde belirtmeniz gerekir. Bkz bu cevabı hem de diğer cevaplar.
Frank Tan

2

-Bir ağda herhangi bir ücretsiz adresi kullanabilirsiniz 127.0.0.0/8, benim durumumda python şişesi için buna ihtiyaç duydum ve yaptığım bu: hosts dosyasına bu satırı ekleyin (bu pencerelerin altında bulabilirsiniz: C: \ Windows \ System32 \ drivers \ etc):

127.0.0.5 flask.dev
  • Bağlantı noktasının varsayılan bağlantı noktası "80" olduğundan emin olun. app.run("127.0.0.5","80")

  • şimdi kodunu çalıştır ve göz at flask.dev


1

Olan şey, localhost üzerinde çalışan başka bir sunucunuz olması ve bu yeni sunucuya farklı bir yerel ana bilgisayar adı vermek istiyorsanız http://teamviewer/

Aslında aradığınız şeyin Sanal Ana Bilgisayar işlevselliği olduğunu düşünüyorum. Apache kullanıyorum, bu yüzden diğer web cinlerinin bunu nasıl desteklediğini bilmiyorum. Belki buna Alias ​​denir. İşte Apache belgeleri:

Apache Sanal Konakları örnekleri


1

Connectaddress = 127.0.0.1 ile netsh kullanmak benim için işe yaramadı.

İnternette her yere bakmamıza rağmen, bunu çözen çözümü bulamadım, bu da localhost'a geri bağlandığı göründüğü için connectaddress = 127.xxx (yani herhangi bir 127. ipv4 adresi, sadece 127.0.0.1 değil) kullanmaktı. aynı ama kısıtlama olmadan, geri döngü netsh içinde çalışır.


İlk ve son paragrafları kaldırmanızı öneririm. Mevcut çözümlerin işe yaramadığını ve başka bir çözüm bulduğunuzu söyleyin. Aksi takdirde cevabınız bir yoruma çok benziyor, bu yüzden insanlar bunu bir cevap değil olarak işaretleyebilir ve kaldırılacaktır.
StaceyGirl


0

Http isteklerini uygun bağlantı noktasına yönlendirmek için bir proxy sunucusu olarak NGNIX veya Apache HTTP sunucusuna ihtiyacınız vardır. En güçlü çözümdür ve bu, yeni alt alan adları eklemeye devam etmenin veya DNS kayıtları sunucuya yönlendirildiğinde otomatik olarak yeni alan adları eklemenin gerçekten kolay bir yoludur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.