IP 주소와 포트를 사용하도록 Windows 호스트 파일을 구성 할 수 있습니까?


13

IP 주소 + 포트를 기반으로 호스트 요청을 보내도록 Windows 호스트 파일 을 구성하고 싶습니다 .

예를 들면 다음과 같습니다.

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

포트 8080에서 Apache 수신 대기하고 포트 80에서 IIS 수신 대기 중이므로 (기본값).

따라서이 작업을 수행하는 가장 좋은 방법은 hosts파일 을 수정하는 것 입니다. 아무것도 영향을 미치지 않습니다. 오류나 메시지가 표시되지 않습니다.



브라우저에서 site1.com (: 80)sitetwo.com:8080 을 시작할 수없는 이유는 무엇 입니까?
Yvan

답변:


11

당신은 할 수 없습니다. 호스트 파일은 바로 그 호스트입니다. 로컬 컴퓨터 내의 "단락 된"DNS와 같습니다. DNS는 또한 포트로 당신을 보낼 수 없습니다.

수행하려는 작업을 수행하려면 IIS 또는 Apache에서 가상 호스팅을 설정하고 HTTP 호스트 : 헤더를 기반으로 가상 호스팅을 사용하여 서비스가 제공 할 사이트를 결정하도록합니다. 그러나 IIS와 Apache를 동시에 사용하려는 경우에는 도움이되지 않습니다.


가상 호스팅에 대해 이해하지 못했습니다. 가상 호스팅은 어떻게합니까?

4
  • hosts파일은 호스트 이름 확인만을위한 것입니다
  • 브라우저 , 직접 지정 포트가없는 경우 : 즉 <hostname>:<port>, 기본값 포트80

일반적인 문제 시나리오

  1. 응용 프로그램은 일반적으로 동일한 기본 IP 주소에 자신의 서버를 설정 127.0.0.1일명 localhost (호스트 파일에 정의) .
  2. 다른 기존 / 실행중인 서버 간의 충돌을 피하기 위해 응용 프로그램에서는 일반적으로 IP 주소가 아닌 포트를 변경할 수 있습니다.

    2a. 루프백 예약 주소 공간 에서 서버의 IP 주소를 다른 주소로 변경할 수 있다면 호스트 파일에서 포트를 설정하지 않았을 것입니다. 127.0.0.0/8

가능한 해결책

Windows에 포함 된 네트워킹 도구 netsh를 포트 프록시로 사용하여이 문제를 해결할 수 있습니다 .


개요

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

행위

  • 서버를 시작하십시오 localhost:8081
  • hosts 파일 에 "local DNS"를 새로운 줄로 추가하십시오
    • 127.65.43.21 example.app
      • 네트워크의 모든 무료 주소를 127.0.0.0/8사용할 수 있습니다.
      • 참고 :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


자료 링크 :

참고 :이 답변은 stackoverflow에 대한이 비슷한 질문 / 답변에서 논의 한 내 답변과 중복 됩니다.


이것은 훌륭한 답변입니다 ... 리소스 링크에 감사드립니다!
Eric Hepperle-CodeSlayer2010

3

아냐, 못해 작동하지 않으면 다른 문제가 발생하는 것입니다.

127.0.0.1 site.com
127.0.0.1 www.site.com

이것이 개발 박스를위한 것이라고 생각합니까?

DNS 쿼리 프록시와 같은 작업을 수행하지 않는 한 DNS는 site.com 및 www.site.com을 localhost로 확인합니다. 웹 서버 구성 도움말을 ServerFault에 요청해야 할 가능성이 가장 높습니다.


도와 주셔서 감사합니다!!! 그러나 방법이 없습니다 ??? 그렇다면 어떻게 다른 포트와 병렬로 iis와 아파치를 실행할 수 있습니까?

그들은 여전히 ​​같은 주소로 가고 있으며 포트는 호스트가하는 일을 고려하지도 않습니다. 포트는 여전히 작동하지만 병렬로 실행할 수 있습니다.
Xorlev

3

Fiddler로 그렇게 할 수 있습니다 . 와 피들러 스크립트 , 당신은 수 많은 놀라운 일들.

이런 식으로 호스트를 설정하면

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

이 추가 CustomRules.js (오픈에 CustomRules.js 선택 사용자 정의 규칙 피들러의에 규칙 메뉴)

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

그런 다음 Fiddler가 호스트를 변환하면 포트 8080에 연결됩니다.


동일한 효과에 사용될 수있는 오픈 소스 대안 (james, owasp zap 또는 기타)을 알고 있습니까?
Marc.2377

1

로컬 개발에만 서버를 사용하고 있습니까? 그렇다면 Apache가 127.0.0.2:80을 수신하고 hosts 파일을 사용하여 원하는 도메인 이름으로 리디렉션하도록 할 수 있습니다.


0

다른 답변과 마찬가지로 호스트 파일에는 포트 정보가 없지만 아파치 또는 IIS와 같이 헤더를 기반으로 리디렉션되는 페이지가 이름 기반 가상 호스팅을 위해 할 수 있습니다. 헤더를 확인하고 필요에 따라 리디렉션하십시오. 그러나 바퀴를 재발 명할 때 실제로 이것의 가치를 보지 못합니다. 아파치는 포트 기반 가상 호스팅을 지원하며 iis는 지원한다고 가정합니다.

우리 둘 다를 운영하는 개발 머신을 갖는 것이 당신의 목표는 생산 상황입니다.



-1

이것은 당신이 할 수있는 일이며, 지역 개발에만 도움이 될 것입니다.

호스트 파일 :

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

IIS에서 새 웹 사이트 및 local.site1.com 및 local.site2.com을 작성하십시오.

IIS 설정

  • IP 주소 : 모두 할당되지 않음 (로컬 호스트 또는 사용 가능한 다른 IP를 사용함)
  • 포트 : 이미 사용중인 것 이외의 것 (81,82,83 등. 기본 웹 사이트에서 이미 사용중인 80)
  • 호스트 이름 : 비워 두십시오

잘 가세요 사용중인 포트가 다른 프로세스에서 사용 중이 아니며 방화벽, 바이러스 백신 등에서 열려 있는지 확인하십시오.

그런 다음 로컬 컴퓨터 또는 LAN에서 웹 사이트에 액세스하기 위해 다음 URL을 사용할 수 있습니다.

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