Menggunakan nomor port dalam file host Windows

190

Setelah menginstal TeamViewer, saya telah mengubah port wampserver ke 8080, jadi alamatnya adalah http://localhost:8080.

Untuk file host yang terletak di C: \ WINDOWS \ system32 \ drivers \ etc \, saya juga telah membuat perubahan seperti di bawah ini

SEBELUM
127.0.0.1 www.example.com

SETELAH
127.0.0.1:8080 www.example.com

Ketika saya mengakses www.example.com, itu tidak mengarahkan ulang ke wampserver saya, bagaimana cara memperbaikinya?

Charles Yeung
sumber
Anda memerlukan NGNIX atau Apache HTTP server sebagai server proxy untuk meneruskan permintaan http ke aplikasi yang sesuai -> yang mendengarkan port tertentu (atau melakukannya dengan CNAME yang menyediakan perusahaan Hosting)
Musa
Mungkin tinjau ini dan alihkan jawaban yang diterima ke jawaban netsh? Saya berakhir di sini ketika mencoba mencari cara memetakan domain .test ke gambar buruh pelabuhan saya secara lokal di Windows 10, dan jawaban netsh bekerja seperti pesona!
Jereme
Pertanyaannya adalah: apakah Anda mencoba mengalihkan seluruh host ke satu port (?!) Atau hanya port 80 (dari host itu) ke port 8080? Sebagian besar jawaban di sini adalah tentang cara mengalihkan (atau setidaknya mencoba mengarahkan ... ;-) port 80 dari host ke port 8080 dari "localhost" Anda. Contoh: https://www.example.comharus pergi ke port 8080? atau ke default 443 (sebagaimana mestinya) Yang berarti: apakah Anda ingin https juga dialihkan ke port 8080 dari localhost Anda? Atau Anda tidak peduli sama sekali di mana ini akan diarahkan?
ilias iliadis

Jawaban:

195

The hostsfile untuk resolusi nama host saja (pada Windows serta pada Unix-seperti sistem). Anda tidak dapat memasukkan nomor port di sana, dan tidak ada cara untuk melakukan apa yang Anda inginkan dengan konfigurasi tingkat OS umum - browser adalah yang memilih port untuk dipilih.

Jadi gunakan bookmark atau semacamnya.
(Beberapa perangkat lunak firewall / perutean mungkin mengizinkan pengalihan port keluar, tetapi itu tidak benar-benar terdengar seperti opsi yang menarik untuk ini.)

Tikar
sumber
6
cara menggunakan bookmark, dapatkah Anda mengarahkan kami ke tautan atau beberapa dokumentasi atau tutorial tentang hal ini
adham dwikat
@ Jeremy: Anda harus mengatakan itu kepada OP, saya tidak bisa berbuat apa-apa
Mat
1
@Mat Itu akan menyenangkan, bukan? Saya hanya ingin orang lain yang melihat ini tahu sedikit untuk menggulir ke bawah dan mencobanya. Saya berakhir di sini ketika mencoba mencari cara memetakan domain .test ke gambar buruh pelabuhan saya secara lokal di Windows 10, dan jawaban netsh bekerja seperti pesona!
Jereme
170

Apa yang Anda inginkan dapat dicapai dengan memodifikasi file host melalui aplikasi Fiddler 2 .

Ikuti langkah ini:

  1. Instal Fiddler2

  2. Arahkan ke menu Fiddler2: - Alat > HOSTS .. (Klik untuk memilih)

  3. Tambahkan baris seperti ini: -

    localhost:8080 www.mydomainname.com

  4. Simpan file & kemudian checkout www.mydomainname.com di browser.

Rajat Gupta
sumber
34
Ini solusi yang buruk. Anda harus menjalankan Fiddler setiap saat.
James Huckabone
49
@JamesHuckabone: Apakah Anda punya solusi yang lebih baik? kami akan menyukainya!
Rajat Gupta
16
Saya mendapatkan Kesalahan 400 Permintaan Buruk ketika saya menggunakan metode ini
Sam
3
ini sepertinya tidak lagi berfungsi. Sudah mencoba dengan fiddler2 dan fiddler4
basher
1
@basher U masih bisa skrip di Fiddler's Rules.js pasti. Functionallity host pada Fiddler BUKAN file host Windows, itu adalah rekreasi dari nama-nama yang membuatnya mudah untuk dikerjakan. Seperti Autoresponders, hanya sebagian dari apa yang dapat Anda lakukan dengan scripting secara langsung. Jika Anda tidak dapat melakukan sesuatu dengan menu, skriplah.
m3nda
159

Saya berhasil mencapai ini dengan menggunakan alat Networking termasuk Windowsnetsh .

Seperti yang ditunjukkan Mat: File host hanya untuk resolusi nama host, jadi kombinasi keduanya melakukan trik untuk saya.

Contoh


Gambaran

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

Tindakan

  • Mulai server saya aktif localhost:8081
  • Menambahkan "DNS lokal" saya di file host sebagai baris baru
    • 127.65.43.21 example.app
      • Setiap alamat gratis di jaringan 127.0.0.0/8( 127.x.x.x) dapat digunakan.
      • Catatan: Saya berasumsi127.65.43.21:80tidak ditempati oleh layanan lain.
      • Anda bisa memeriksanya netstat -a -n -p TCP | grep "LISTENING"
  • menambahkan 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
  • Saya sekarang dapat mengakses server di http://example.app

Catatan:
- Modifikasi perintah / 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:

Pau Coma Ramirez
sumber
Ini tidak bekerja untuk saya. Di tautan yang Anda tunjukkan tertulis "Anda juga tidak bisa menggunakan 127.0.0.1 sebagai connectaddress.".
Don Box
@ DonBox: Jika Anda memberikan detail lebih lanjut tentang pengaturan Anda, mungkin saya dapat membantu Anda. Menggunakan 127.0.0.1 sebagai alamat koneksi pada dasarnya adalah persyaratan dalam skenario kasus yang disajikan karena server mulai di localhost , seperti yang dilakukan secara default banyak program lainnya. Jika Anda dapat mulai dari alamat lain yang tidak memerlukan mekanisme penerusan port secara keseluruhan, Anda hanya perlu memodifikasi file hosts ... Mungkin, seperti yang dijelaskan di sini , Anda belum menginstal protokol ipv6 : gunakan perintah berikut untuk menginstal mereka:netsh interface ipv6 install
Pau Coma Ramirez
13
Ini harus menjadi jawaban yang diterima karena alat-alat sudah diinstal di dasar saya menginstal windows 10 dan ini tidak persis apa yang saya butuhkan. Saya sedang mempertimbangkan untuk menginstal apache dan mod_proxy tetapi ini adalah solusi yang jauh lebih baik.
Max Young
2
Tidak bekerja untuk saya. Netsh tampaknya meneruskan alamat, tetapi bukan port.
steph643
2
Saya menggunakan porter docker. Ini menggunakan localhost pada port 9000. Memodifikasi perintah di atas, saya menggunakan portainer.local tanpa harus menentukan port pada alamat. Saya pertama-tama, tambahkan 127.0.0.1sebagai alamat yang cocok portainer.localdengan file host saya. Lalu saya jalankan: netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=9000 connectaddress=127.0.0.1 Tekan enter key di cmd / PowerShell untuk menjalankannya. Setelah ini, keluar dari netsh dengan mengetik exit. Di browser, mengetik http://portainer.localsekarang membawa saya ke tempat yang http://localhost:9000dulu. Ini bekerja seperti pesona bagi saya.
EffectiX
14

Fiddler2 -> Aturan -> Aturan Kustom

kemudian temukan fungsi OnBeforeRequest pada script berikutnya di akhir:

if (oSession.HostnameIs("mysite.com")){
    oSession.host="localhost:39901";
}
Sergey
sumber
Memang Fiddler jauh lebih kuat daripada yang diharapkan untuk tidak menjalankan server web pada port 80, atau bahkan Skype ... Pada Windows bekerja lebih baik daripada di Linux dengan Mono, setidaknya fitur menangkap, karena Linux tidak menggunakan Inet dari CLRL. Ini adalah cara yang lebih baik untuk melakukan hal-hal di Fiddler, karena dapat diekspor dengan 1 file.
m3nda
3

Cara paling sederhana adalah menggunakan Ergo sebagai proksi terbalik Anda: https://github.com/cristianoliveira/ergo

Anda mengatur layanan dan IP-nya: PORT dan ergo merutekannya untuk Anda :).

Anda dapat menggunakan hal yang sama nginxatau apachetetapi Anda harus mengonfigurasinya.

Cristian Oliveira
sumber
4
Ergo tampaknya merupakan proyek yang Anda kerjakan (berdasarkan nama pengguna). Jika itu masalahnya, Anda harus menunjukkan secara lebih eksplisit bahwa Anda berafiliasi dengan produk itu. Lihat jawaban ini dan juga jawaban lainnya.
Frank Tan
2

-Anda dapat menggunakan alamat gratis apa saja di jaringan 127.0.0.0/8, dalam kasus saya diperlukan ini untuk python flask dan inilah yang telah saya lakukan: tambahkan baris ini di file hosts (Anda dapat menemukannya di windows di bawah: C: \ Windows \ System32 \ drivers \ etc):

127.0.0.5 flask.dev
  • Pastikan port tersebut adalah port default "80" dalam kasus saya, inilah yang ada di dalam python flask: app.run("127.0.0.5","80")

  • sekarang jalankan kode Anda dan ramban flask.dev

Belal Mohammed
sumber
1

Jika yang terjadi adalah Anda memiliki server lain yang berjalan di localhost dan Anda ingin memberi server baru ini nama host lokal yang berbeda http://teamviewer/

Saya pikir apa yang sebenarnya Anda cari adalah fungsi Host Virtual. Saya menggunakan Apache jadi saya tidak tahu bagaimana daemon web lain mendukung ini. Mungkin itu disebut Alias. Berikut ini dokumentasi Apache:

Contoh Apache Virtual Hosts

DogBot
sumber
1

Menggunakan netsh dengan connectaddress = 127.0.0.1 tidak berhasil untuk saya.

Meskipun mencari di mana-mana di internet, saya tidak dapat menemukan solusi yang memecahkan masalah ini untuk saya, yaitu menggunakan connectaddress = 127.xxx (mis. 127. alamat ipv4, hanya tidak 127.0.0.1) karena ini muncul untuk menghubungkan kembali ke localhost saja sama tetapi tanpa batasan, sehingga loopback bekerja di netsh.

aards
sumber
Saya sarankan Anda untuk menghapus paragraf pertama dan terakhir. Katakan saja bahwa solusi yang ada tidak bekerja dan Anda menemukan yang lain. Kalau tidak, jawaban Anda sangat mirip komentar, jadi orang mungkin menandainya "bukan jawaban" dan itu akan dihapus.
StaceyGirl
0

Anda memerlukan NGNIX atau Apache HTTP server sebagai server proxy untuk meneruskan permintaan http ke aplikasi yang sesuai -> yang mendengarkan port tertentu (atau melakukannya dengan CNAME yang menyediakan perusahaan Hosting). Ini adalah solusi paling kuat dan ini hanya cara yang sangat mudah untuk terus menambahkan subdomain baru, atau menambahkan domain baru secara otomatis ketika catatan DNS diarahkan ke server.

Musa
sumber