Windows 호스트 파일에서 포트 번호 사용


190

TeamViewer를 설치 한 후 wampserver 포트를 8080으로 변경하여 주소가 http://localhost:8080.

C : \ WINDOWS \ system32 \ drivers \ etc \에있는 호스트 파일의 경우 다음과 같이 변경했습니다.

전에
127.0.0.1 www.example.com


127.0.0.1:8080 www.example.com

www.example.com에 액세스하면 wampserver로 리디렉션되지 않습니다. 어떻게 해결할 수 있습니까?


http 요청을 적절한 응용 프로그램으로 전달하기 위해 프록시 서버로 NGNIX 또는 Apache HTTP 서버가 필요합니다.-> 특정 포트를 수신 대기하는 (또는 호스팅 회사를 제공하는 CNAME으로 수행)
Musa


아마도 이것을 검토하고 허용 된 답변을 netsh 답변으로 전환 하시겠습니까? Windows 10에서 .test 도메인을 도커 이미지에 로컬로 매핑하는 방법을 알아 내려고 여기에 도달했으며 netsh 답변은 매력처럼 작동했습니다!
Jereme

문제는 전체 호스트를 단일 포트 (?!) 또는 포트 80 (해당 호스트)으로 포트 8080으로 리디렉션하려고합니까? 여기에 대한 대부분의 답변은 호스트의 포트 80을 "localhost"의 포트 8080으로 리디렉션하는 방법 (또는 적어도 리디렉션하려고 시도합니다; ;-))에 있습니다. 예 : https://www.example.com포트 8080으로 이동해야합니까? 또는 기본 443으로? (필요한 경우) 다음을 의미합니다. https가 로컬 호스트의 포트 8080으로 리디렉션되도록 하시겠습니까? 아니면 어디로 리디렉션되는지 전혀 신경 쓰지 않습니까?
ilias iliadis

답변:


195

hosts파일은 호스트 이름 확인 전용입니다 (Windows 및 Unix 계열 시스템). 포트 번호를 입력 할 수 없으며 일반적인 OS 수준 구성으로 원하는 작업을 수행 할 수있는 방법이 없습니다. 브라우저는 선택할 포트를 선택합니다.

북마크 나 이와 비슷한 것을 사용하십시오.
(일부 방화벽 / 라우팅 소프트웨어는 아웃 바운드 포트 리디렉션을 허용 할 수 있지만 실제로 매력적인 옵션은 아닙니다.)


6
책갈피를 사용하는 방법에 대한 링크 나 문서 나 튜토리얼로
연결될 수 있습니까?

@Jereme : OP에게 말하면 아무것도 할 수 없습니다
Mat

1
@ 매트 그게 좋을까요? 나는 이것을 보는 다른 사람들이 약간 아래로 스크롤하여 샷을 내기를 원합니다. Windows 10에서 .test 도메인을 도커 이미지에 로컬로 매핑하는 방법을 알아 내려고 여기에 도달했으며 netsh 답변은 매력처럼 작동했습니다!
Jereme

170

Fiddler 2 응용 프로그램을 통해 hosts 파일을 수정하면 원하는 것을 얻을 수 있습니다 .

다음과 같이하세요:

  1. Fiddler2 설치

  2. Fiddler2 메뉴로 이동하십시오 .- 도구 > 호스트 .. (선택하려면 클릭)

  3. 다음과 같은 줄을 추가하십시오.

    localhost:8080 www.mydomainname.com

  4. 파일을 저장 한 다음 www.mydomainname.com브라우저에서 체크 아웃하십시오 .


34
이것은 나쁜 해결책입니다. 항상 Fiddler를 실행해야합니다.
James Huckabone

49
@JamesHuckabone : 더 나은 솔루션이 있습니까? 우리는 그것을 좋아할 것입니다!
Rajat Gupta

16
이 방법을 사용할 때 오류 400 잘못된 요청이 발생합니다
Sam

3
이것은 더 이상 작동하지 않는 것 같습니다. fiddler2와 fiddler4 둘 다로 시도
basher

1
@basher U는 여전히 Fiddler의 Rules.js에서 스크립트를 작성할 수 있습니다. Fiddler의 호스트 기능은 Windows 호스트 파일이 아니며 작업하기 쉽도록 해당 이름을 재현 한 것입니다. 자동 응답기와 유사하며 직접 스크립팅 할 수있는 작업의 일부일뿐입니다. 메뉴로 무언가를 할 수 없다면, 스크립트를 작성하십시오.
m3nda

159

Windows에 포함 된 네트워킹 도구를 사용하여이를 달성했습니다 netsh.

Mat가 지적한 것처럼 : hosts 파일은 호스트 이름 확인 전용이므로 두 가지를 조합하면 나에게 속임수가되었습니다.


개요

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

행위

  • 내 서버를 시작했습니다 localhost:8081
  • hosts 파일 에 "local 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 명령 유틸리티를 사용하여 다음 네트워크 구성을 추가했습니다.
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • 이제 서버에 액세스 할 수 있습니다 http://example.app

참고 :
-이 명령 / 파일 수정은 관리자 권한 으로 실행해야합니다.

- netsh를 portproxy에서 IPv6 라이브러리를 필요로 다음 명령을 사용하여 설치 그렇지 않으면, 일반적으로 그들은 또한 기본적으로 포함되며, 심지어에만 사용 v4tov4에 :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을 connectaddress로 사용할 수 없습니다"라고 표시되어 있습니다.
Don Box

@ DonBox : 설정에 대한 자세한 내용을 제공하면 도움이 될 것입니다. 사용 127.0.0.1을 서버에서 시작했기 때문에 연결 주소로하는 것은 기본적으로 제시된 시나리오의 요구 사항입니다 로컬 호스트 와 같은 기본 많은 다른 프로그램에 의해 수행합니다. 다른 주소에서 시작할 수 있다면 전체 포트 전달 메커니즘이 필요하지 않고 호스트 파일 만 수정하면됩니다. 여기자세히 설명 된 대로 ipv6 프로토콜이 설치되어 있지 않은 경우 : 다음 명령을 사용하여 설치하십시오. 그들 :netsh interface ipv6 install
포 코마 라미레즈

13
도구가 이미 기본 Windows 10 설치에 설치되어 있고 이것이 내가 필요한 것을 정확하게 수행하기 때문에 이것이 허용되는 대답이어야합니다. 아파치와 mod_proxy 설치를 고려하고 있었지만 이것은 훨씬 더 나은 솔루션입니다.
Max Young

2
나를 위해 작동하지 않습니다. Netsh는 주소를 전달하지만 포트는 전달하지 않는 것 같습니다.
steph643

2
도커의 portainer를 사용합니다. 포트 9000에서 localhost를 사용합니다. 위 명령을 실행하면 주소에서 포트를 지정하지 않고 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 / powershell에서 Enter 키를 눌러 실행하십시오. 그런 다음을 입력하여 netsh를 종료하십시오 exit. 브라우저에서 입력하면 http://portainer.local이제 http://localhost:9000익숙한 곳으로 이동 합니다. 이것은 저에게 매력처럼 작용했습니다.
EffectiX

14

피들러 2-> 규칙-> 사용자 정의 규칙

그런 다음 끝에 다음 스크립트에 OnBeforeRequest 함수를 찾으십시오.

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

실제로 Fiddler는 포트 80 또는 심지어 Skype에서 웹 서버를 실행하지 않을 것으로 예상하는 것보다 훨씬 강력합니다. Windows에서는 모노가있는 Linux보다 캡처 기능이 뛰어납니다. cuz Linux는 CLRL의 Inet을 사용하지 않습니다. 이것은 Fiddler에서 작업을 수행하는 더 좋은 방법입니다. cuz는 1 개의 파일로 내보낼 수 있습니다.
m3nda

3

가장 간단한 방법은 Ergo를 리버스 프록시로 사용하는 것입니다 : https://github.com/cristianoliveira/ergo

당신은 당신의 서비스와 IP : PORT를 설정하고 ergo는 당신을 위해 그것을 라우팅합니다 :).

당신은 사용하여 동일한 달성 할 수 nginx또는 apache그러나 당신은 그것들을 구성해야합니다.


4
Ergo는 사용자 이름을 기반으로 작업 한 프로젝트 인 것 같습니다. 이 경우 해당 제품과 관련이 있음을 더 명확하게 표시해야합니다. 이 답변 과 다른 답변을 참조하십시오 .
Frank Tan

2

-네트워크 127.0.0.0/8에서 무료 주소를 사용할 수 있습니다. 제 경우에는 파이썬 플라스크에 이것이 필요했습니다. 이것은 내가 한 일입니다 : hosts 파일 에이 줄을 추가하십시오 (당신은 Windows : \ Windows \ System32 \ drivers \ etc) :

127.0.0.5 flask.dev
  • 필자의 경우 포트가 기본 포트 "80"인지 확인하십시오. app.run("127.0.0.5","80")

  • 이제 코드를 실행하고 찾아보십시오. flask.dev


1

무슨 일이 일어나고 있다면 localhost에서 다른 서버를 실행 중이며이 새로운 서버에 다른 로컬 호스트 이름을 지정하려고합니다 http://teamviewer/

실제로 찾고있는 것은 가상 호스트 기능이라고 생각합니다. Apache를 사용하므로 다른 웹 데몬이 이것을 어떻게 지원하는지 모릅니다. 아마도 별명이라고 할 수 있습니다. Apache 문서는 다음과 같습니다.

아파치 가상 호스트 예제


1

connectaddress = 127.0.0.1과 함께 netsh를 사용하면 작동하지 않습니다.

인터넷의 모든 곳을 보았지만이 문제를 해결 한 솔루션을 찾을 수 없었습니다. 루프백이 netsh에서 작동하도록 동일하지만 제한이 없습니다.


첫 단락과 마지막 단락을 제거하는 것이 좋습니다. 기존 솔루션이 작동하지 않고 다른 솔루션을 찾았다 고 말하십시오. 그렇지 않으면 답변이 댓글과 비슷해 보이므로 사람들이 해당 답변을 "답변이 아님"으로 표시하면 삭제됩니다.
StaceyGirl


0

http 요청을 적절한 응용 프로그램에 전달하기 위해 프록시 서버로 NGNIX 또는 Apache HTTP 서버가 필요합니다.-> 특정 포트를 수신 대기하거나 호스팅 회사를 제공하는 CNAME으로 수행합니다. 가장 강력한 솔루션이며 DNS 레코드가 서버를 가리킬 때 새 하위 도메인을 계속 추가하거나 새 도메인을 자동으로 추가하는 정말 쉬운 방법입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.