Windows hosts dosyasını IP adresi artı bağlantı noktası kullanacak şekilde yapılandırabilir miyim?


13

Windows hosts dosyasını IP adresi + bağlantı noktalarına göre ana bilgisayar istekleri gönderecek şekilde yapılandırmak istiyorum .

Örneğin:

127.0.0.1:80       www.site1.com
127.0.0.1:8080     www.sitetwo.com

Çünkü 8080 numaralı bağlantı noktasında Apache ve 80 numaralı bağlantı noktasında IIS var (varsayılan).

Bunu yapmanın en iyi yolunun hostsdosyayı değiştirmek olduğunu düşünüyorum . Hiçbir şeyi etkilemez. Ne hata ne de mesaj alıyorum.


1
Üzerinde söz bu tür soran daha iyi bir yanıt alırsınız serverfault.com
Carl Norum

Yanıtlar:


11

Yapamazsın. Hosts dosyası sadece - hosts. Yerel makinenizdeki "kısa devre" DNS'ye eşdeğerdir. DNS sizi bağlantı noktalarına da gönderemez.

Yapmaya çalıştığınız şeyi başarmak için, IIS veya Apache altında sanal barındırma kurmak ve hizmetin hangi sitenin sunulacağına karar vermesine izin vermek için bunu (HTTP Ana Bilgisayarı: üstbilgiye dayalı olarak) kullanmak istersiniz. Bununla birlikte, bunu hem IIS hem de Apache ile aynı anda yapmak istiyorsanız, size yardımcı olmaz.


lütfen net olabilir misiniz, ben sanal hosting hakkında anlamadı. Sanal barındırma işlemini nasıl yapabilirim?

4
  • hostsDosya ana bilgisayar adı çözümlemesi içindir
  • Tarayıcı , direkt olarak belirten bağlantı yokluğunda: örneğin <hostname>:<port>, varsayılan noktasına80

Tipik Sorun Senaryosu

  1. uygulamalar genellikle sunucularını aynı varsayılan ip adresine (anasistem dosyasında tanımlanır)127.0.0.1 ayarlarlar .localhost
  2. diğer varolan / çalışan sunucular arasında çakışmayı önlemek için, uygulama genellikle bağlantı noktasını değiştirmenize izin verir, ancak ip adresini değiştirmenize izin vermez.

    2a. Eğer siz de başkasına sunucularının IP adresini değiştirebilir geri döngü saklıdır adres alanı 127.0.0.0/8 , sonra muhtemelen ana dosyasında set limanlara çalışmadan olmaz.

Olası çözüm

Windows dahil olan Ağ aracını netshbağlantı noktası proxy'si olarak kullanarak bu sorunu çözebilirsiniz .


genel bakış

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

Hareketler

  • Sunucunuzu açın localhost:8081
  • Hosts dosyasına "yerel DNS" yi yeni bir satır olarak ekleyin
    • 127.65.43.21 example.app
      • Ağdaki herhangi bir boş adres 127.0.0.0/8kullanı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ı ekleyin
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Sunucuya şuradan erişin: 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:

Not: Bu cevap stackoverflow bu benzer soru / cevap tartışılan cevabımın bir kopyasıdır .


Bu harika bir cevap ... kaynak bağlantıları için teşekkürler!
Eric Hepperle - CodeSlayer2010

3

Hayır, yapamazsınız. Çalışmıyorsa, başka bir şey ters gidiyor.

127.0.0.1 site.com
127.0.0.1 www.site.com

Bunun bir geliştirme kutusu için olduğunu varsayıyorum?

DNS sorgularınızı proxy yapmak gibi bir şey yapmadığınız sürece DNS, site.com ve www.site.com adreslerini localhost'a çözümleyecektir. Muhtemelen ServerFault'ta web sunucusu yapılandırma yardımı istemelisiniz, bu en olası sorundur.


Yardım için teşekkürler!!! Ama yolu yok ??? O zaman iis ve apache'yi farklı portlarla nasıl çalıştırabilirim

Hala aynı adrese gidiyorlar, liman ev sahiplerinin yaptıklarını hesaba katmıyor. Bağlantı noktası yine de çalışır, paralel olarak çalıştırabilirsiniz.
Xorlev

3

Bunu Fiddler ile yapabilirsiniz . Fiddler betiği ile birçok şaşırtıcı şey yapabilirsiniz.

Böyle ana bilgisayarlar ayarlarsanız

127.0.0.1     www.site1.com    # Port 80
127.0.0.1     www.sitetwo.com  # Port 8080

Bu ekleme CustomRules.js (açık için CustomRules.js , seçim Özelleştirme Kuralları Fiddler'in üzerinde Kuralları menüsünden)

// this method is already exist
static function OnBeforeRequest(oSession: Session) {  
    if (oSession.host.toLowerCase() == "www.sitetwo.com") 
        oSession.host = "www.sitetwo.com:8080";
    ...
}

Ardından Fiddler ana bilgisayarı dönüştürür ve 8080 numaralı bağlantı noktasına bağlanırsınız.


Aynı etki için kullanılabilecek herhangi bir açık kaynak alternatifinin (james, owasp zap veya diğer) farkında mısınız?
Marc.2377

1

Sunucuları yalnızca yerel geliştirme için mi kullanıyorsunuz? Öyleyse, Apache'nizi 127.0.0.2:80 dinlemesine ve hosts dosyasıyla istediğiniz alan adına yönlendirebilirsiniz.


0

Diğer yanıtlarda olduğu gibi, anasistem dosyasında bağlantı noktası bilgileri yoktur, ancak ad tabanlı sanal barındırma için apache veya IIS gibi üstbilgiye yönlendirilen bir sayfanız olabilir. Başlığı kontrol edin ve gerekirse yeniden yönlendirin. Ancak tekerleği yeniden icat ettiğiniz için bunun değerini gerçekten görmüyorum. Apache port tabanlı sanal hosting desteği ve iis olduğunu varsayıyorum.

Hedefiniz hem çalışan bir geliştirme makinesi olması bizim bir üretim durumu için budur.



-1

Yapabileceğiniz bu, sadece yerel kalkınma için yararlı olacaktır.

hosts dosyası:

  • 127.0.0.1 local.site1.com
  • 127.0.0.1 local.site2.com

IIS'de yeni bir web sitesi oluşturun ve local.site1.com & local.site2.com için

IIS Kurulumu

  • IP Adresi: Tümü Atanmadı (yerel ana bilgisayarı veya kullanılabilen başka bir ip kullanır)
  • Liman: kullanımda olanlardan başka herhangi biri (81,82,83 vb. 80 zaten Varsayılan Web Sitesi tarafından kullanılıyor)
  • Ana Bilgisayar Adı: Boş bırakın

Senin gitmen iyidir. Kullandığınız bağlantı noktalarının başka bir işlem tarafından kullanılmadığından ve ayrıca güvenlik duvarı, antivirüs vb.

Bundan sonra, yerel makineden veya LAN'dan web sitelerine erişmek için aşağıdaki URL'leri kullanabilirsiniz.

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.