Bisakah saya mengonfigurasi file host Windows untuk menggunakan alamat IP plus port?

13

Saya ingin mengkonfigurasi file host Windows untuk mengirim permintaan host berdasarkan alamat IP + port.

Sebagai contoh:

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

Karena saya memiliki Apache mendengarkan pada port 8080 dan IIS pada port 80 (default).

Jadi, saya pikir cara terbaik untuk melakukan ini adalah dengan memodifikasi hostsfile. Itu tidak mempengaruhi apa pun. Saya tidak mendapatkan pesan kesalahan atau pesan apa pun.

Peter Mortensen
sumber
1
Anda akan mendapatkan respons yang lebih baik dengan menanyakan pertanyaan semacam ini di serverfault.com
Carl Norum
Mengapa Anda tidak bisa meluncurkan site1.com (: 80) dan sitetwo.com:8080 di browser Anda?
Yvan

Jawaban:

11

Kamu tidak bisa File host hanya itu - host. Ini setara dengan DNS "korsleting" dalam mesin lokal Anda. DNS juga tidak dapat mengirim Anda ke porta.

Untuk mencapai apa yang Anda coba lakukan, Anda ingin mengatur hosting virtual di bawah IIS atau Apache, dan menggunakannya (berdasarkan HTTP Host: header) untuk membiarkan layanan memutuskan situs mana yang akan ditampilkan. Ini tidak akan membantu Anda, jika Anda ingin melakukan ini dengan IIS dan Apache secara bersamaan.


sumber
bisa Anda jelaskan, saya tidak mengerti tentang virtual hosting. Bagaimana saya bisa melakukan hosting virtual?
4
  • The hostsfile untuk resolusi nama host hanya
  • The Browser , dengan tidak adanya langsung menentukan port: yaitu <hostname>:<port>, default port80

Skenario Masalah Khas

  1. aplikasi biasanya mengatur server mereka ke alamat ip default yang sama 127.0.0.1alias localhost (didefinisikan dalam file host) .
  2. untuk menghindari tabrakan antara kemungkinan server lain yang ada / berjalan, aplikasi biasanya memungkinkan Anda untuk mengubah port, tetapi bukan alamat ip.

    2a. Jika Anda bisa mengubah alamat IP server ke yang lain di ruang alamat loopback yang dicadangkan 127.0.0.0/8 , maka Anda mungkin tidak akan mencoba untuk mengatur port di file host.

Solusi yang mungkin

Anda dapat mengatasi ini menggunakan alat Jaringan yang disertakan Windowsnetsh sebagai proxy port.


Gambaran

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

Tindakan

  • Mulai server Anda localhost:8081
  • Tambahkan "DNS lokal" di file host sebagai baris baru
    • 127.65.43.21 example.app
      • Setiap alamat gratis di jaringan 127.0.0.0/8dapat digunakan.
      • Catatan: Saya berasumsi127.65.43.21:80tidak ditempati oleh layanan lain.
      • Anda bisa memeriksanya netstat -a -n -p TCP | grep "LISTENING"
  • tambahkan konfigurasi jaringan berikut dengan utilitas perintah netsh
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • Akses server di http://example.app

Catatan:
- Perintah / modifikasi file ini harus dijalankan dengan hak Admin

- netsh portproxy membutuhkan pustaka ipv6 bahkan hanya untuk menggunakan v4tov4, biasanya mereka juga akan disertakan secara default, jika tidak menginstalnya menggunakan perintah berikut:netsh interface ipv6 install


Anda dapat melihat entri yang telah Anda tambahkan dengan perintah:

netsh interface portproxy show v4tov4

Anda dapat menghapus entri dengan perintah berikut:

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


Tautan ke Sumber Daya:

Catatan: jawaban ini adalah duplikat dari jawaban saya yang dibahas dalam pertanyaan / jawaban serupa di stackoverflow ini.

Pau Coma Ramirez
sumber
Ini adalah jawaban yang bagus ... terima kasih atas tautan sumber daya!
Eric Hepperle - CodeSlayer2010
3

Tidak bisa. Jika tidak berhasil, maka ada sesuatu yang salah.

127.0.0.1 site.com
127.0.0.1 www.site.com

Saya berasumsi ini untuk kotak pengembangan?

DNS akan menyelesaikan site.com dan www.site.com ke localhost selama Anda tidak melakukan sesuatu seperti proksi kueri DNS Anda. Anda mungkin harus bertanya di ServerFault untuk bantuan konfigurasi server web, itu masalah yang paling mungkin.

Xorlev
sumber
Terima kasih untuk bantuannya!!! Tapi tidak mungkin ??? Lalu bagaimana saya bisa menjalankan iis dan apache parallelly dengan port yang berbeda
Mereka masih pergi ke alamat yang sama, port bahkan tidak memperhitungkan apa yang host lakukan. Port akan tetap berfungsi, Anda dapat menjalankannya secara paralel.
Xorlev
3

Anda bisa melakukannya dengan Fiddler . Dengan skrip Fiddler , Anda dapat melakukan banyak hal menakjubkan.

Jika Anda mengatur host seperti ini

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

Tambahkan ini di CustomRules.js (untuk membuka CustomRules.js , pilih Kustomisasi Aturan pada menu Aturan Fiddler )

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

Kemudian Fiddler mengonversi host, dan Anda akan terhubung ke port 8080.

Sanghyun Lee
sumber
Apakah Anda mengetahui adanya alternatif sumber terbuka (james, owasp zap, atau lainnya) yang dapat digunakan untuk efek yang sama?
Marc.2377
1

Apakah Anda menggunakan server hanya untuk pengembangan lokal? Jika demikian, Anda dapat menempatkan Apache Anda untuk mendengarkan 127.0.0.2:80 dan mengalihkannya dengan file hosts ke nama domain yang Anda sukai.

Elmo Allén
sumber
0

Seperti dengan jawaban lainnya, file host tidak memiliki informasi port tetapi Anda dapat memiliki halaman yang mengarahkan ulang pada header seperti apache atau IIS akan lakukan untuk hosting virtual berbasis nama. Periksa tajuk dan arahkan ulang sesuai kebutuhan. Namun saya tidak benar-benar melihat nilai ini karena Anda menciptakan kembali kemudi. Apache mendukung virtual hosting berbasis port dan saya berasumsi iis.

Apakah tujuan Anda untuk memiliki mesin pengembangan dengan menjalankan keduanya adalah ini untuk situasi produksi.

memutarkan lagi
sumber
-1

Inilah yang dapat Anda lakukan, akan sangat membantu untuk pengembangan lokal saja.

file host:

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

Di IIS, buat situs web baru dan untuk local.site1.com & local.site2.com

Pengaturan IIS

  • Alamat IP: Semua Tidak Ditugaskan (akan menggunakan host lokal atau ip lain yang tersedia)
  • Port: selain yang sudah digunakan (81,82,83 dan seterusnya. 80 sudah digunakan oleh Situs Web Default)
  • Nama Host: Biarkan kosong

Anda baik untuk pergi. Pastikan port yang Anda gunakan tidak digunakan oleh beberapa proses lain & juga terbuka dari firewall, antivirus, dll.

Setelah ini, Anda dapat menggunakan url berikut untuk mengakses situs web dari mesin lokal atau dari LAN.

Amit Andharia
sumber