Apache 서비스를 위해 Windows 로컬 호스트 (포트 80)를 포트 8080으로 전달 ProxyRequests

최근 발견

IIS를 port로 다시 설정 하면 WHS 컴퓨터에 80넣을 때 http://localhost/“이 웹 사이트의 보안 인증서에 문제가 있습니다”경고 페이지가 표시됩니다. 어쨌든 “계속”경우이 URL이 온다 https://localhost/Remote/logon?ReturnUrl=%2fremoteA의 윈도우 홈 서버 2011 원격 웹 액세스에 usernamepassword. 지금, 나는 확실히 기억할 수 없지만, 나는 원래이 http://localhost/문제 가 제기 되었다고 믿지 않는다 . 그러나 이것이 포트에 관계없이 localhost에 액세스하려는 시도에 영향을 줄 수있는 것처럼 보입니다.

실제로 주요 이슈가 될 수있는 것

오 네트워킹의 복잡성! 나를 괴롭히는 한 가지는 왜 두 사이트가 “부분적으로”나올 것이고 다른 사이트는 전혀 나오지 않는 것이 었습니다. 그런 다음 Firebug의 NET 추적을 실행하면 내 주요 문제는 ISP가 DNS 프록시로 작동 하고 있으며 테스트 사이트를 찾지 못하는 것입니다. 그러나 www.(아닌 test.) 주소에 살고있는 두 사이트를 발견하고 그 사이트 를 제공하는 것처럼 보이지만 이미지가 차단되어 있기 때문에 이미지 파일에 액세스 할 수있는 블록을 설정했기 때문에 이미지가 차단 www.됩니다. 특정 사이트.

그것은 보이지 않는 이미지의 미스터리 (직통 localhost:8080전화 에 대한 기대 )와 5 개의 사이트 중 특정 2 개를 “부분적으로”찾는 이상한 행동을 설명합니다.

이제 라우터 나 프록시 파일을 올바르게 구성하여 WHS 컴퓨터로 다시 리디렉션하는 방법을 알아봐야합니다. 더 빠른 서비스 연결 영역 밖에 있으므로 Wildblue 위성 인터넷 서비스를 사용하고 있습니다. 그들은 “최적화”파일 (모든 사람이 볼 수 있는지 아닌지, 그렇지 않으면 기본적 으로이 버전과 동일 하다는 것을 알지 못함)을 가지고 있으며 , 달성하기 위해 로컬 시스템을 수정하고 사용할 수 있습니다. 내가 필요한 것, 그러나 내가 거기서 무엇을해야하는지 정확히 모르겠습니다.

누구든지 해당 파일을 수정하거나 로컬 사이트 인 경우 프록시로 전송하지 않도록 Linksys E1200 라우터를 구성하는 방법에 대한 제안 사항이 있으면 문제를 해결하는 첫 번째 단계 일 수 있습니다.

harrymc의 권장 사항을 기반으로 한 대표 코드 … 아직 작동하지 않습니다

IIS 포트가로 설정되었습니다 :90.

httdp 파일:

Listen *:80
ServerName localhost:80

vhosts 파일:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName localhost
    ProxyRequests off
    ProxyPass / http://127.0.0.1:90/
    ProxyPassReverse / http://127.0.0.1:90/
</virtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

이전 업데이트 : 내가 주요 이슈 라고 생각한 것 (하위 이슈 일 수 있음)

IIS를 실행하는 Windows 홈 서버가 특정 로컬 호스트 URL을 포트로 전달 8080하여 같은 컴퓨터에서 실행중인 Apache (IIS가 아님)가 페이지를 제공하도록 요청을 선택하도록하려면 어떻게해야합니까?

c:\Windows\System32\drivers\etc\hosts파일 (아래 참조)이 변경되었습니다,하지만 난 그 새 포트에 재 라우팅과 아무 상관이 가정합니다. 또한 IIS는 test.whatever포트 에서 특정 URL 요청 80을 선택하고 동일한 포트의 자체 로컬 호스트로 라우팅 한다고 가정 합니다.

연구에서 찾은 사이트의 팁 에서 Application Request Routing 을 다운로드 했지만 도움이되는지 확실하지 않습니다 (포트 에 대한 URL 전달을 설정하는 것이 희망이었습니다 ). 저는 네트워크 마법사가 아닌 웹 디자이너입니다. 따라서이 모든 작업이 다소 어려워집니다.8080

가능한 방향

이 링크를 기반으로 (아래 erikxiv의 첫 번째 주석을 더 기반으로 검색 한 후 발견) IIS에서 URL 다시 쓰기로 다음을 시도했습니다.

아웃 바운드 규칙 :

일치 : .*(괜찮아 테스트하는 것)

정황:

다음 중 하나와 일치 … (패턴 일치에 문제가없는 것 같음)

{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com

재 작성 조치 :

http://localhost:8080/{R:0} (it would not let me put R:1 like the example)

그러나 여전히 전달이없는 것 같습니다!


아래 정보는 이제 위의 새로운 요청의 배경이되었습니다.


배경 정보

최근에 Windows XP를 실행중인 이전 데스크톱을 Windows Home Server (2011)로 변경했습니다. 이전 컴퓨터는 Apache 설치에서 실행되는 로컬 테스트 사이트의 호스트이기도했습니다. WHS 시스템에서 Apache를 실행하는 것이 내가 처음 생각한 것만 큼 어렵지 않을 것이라는 일부 연구를 발표 한 바 있습니다. -기본적으로 포트 충돌이 없는지 확인하십시오).

따라서 WHS 컴퓨터에 WAMP (64 비트 버전)를 설치하고 IIS와 충돌하지 않도록 httpd포트에서 수신 대기 하도록 Apache 구성 파일 의 설정을 변경했습니다 8080. 포트 변경만으로 XP 컴퓨터에서 가상 호스트 파일을 설정했습니다.

기본적으로, 모든 것이 잘 실행 될 듯 (단, 갱신 참조) 를 제외하고

(원본) 문제

로컬 사이트의 페이지가 잘 나타나고 모든 CSS와 자바 스크립트가 작동하는 동안 모든 이미지 파일이 표시되지 않습니다 . 경로 정보는 마우스 오른쪽 버튼을 클릭하고 선택하면 알 수 있듯이 정확합니다View Image Info (Firefox에서 … 이미지는 브라우저에 표시되지 않으므로 브라우저 버그가 아닙니다).

그러나 내가 알아 차린 Type것은 이미지 정보 상자에 또는 등이 text/html아니라 입니다 중 하나 또는 .PNG ImageJPEG ImageTypeImageBackground

그러나 그 사실에도 불구하고 html (실제로 php 생성 된 html) 내에서 이미지의 올바른 MIME 유형 (가정)을 인식하는 대신 이미지 ( img요소 또는 CSS 여부)를 처리하려고 시도하는 것 background-image같습니다 텍스트, 그래서 나에게 아무것도주지! 그러나 나는 왜 그런지 알 수 없습니다. mime아파치 마임 유형을 제어 파일이 올바른 것입니다. 페이지에는 다음과 같은 헤더가 있습니다.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

…하지만 문제를 일으키지 않아야합니다 (XP에서 실행되거나 라이브 사이트에서 실행되지 않았 음).

그래서 나는 생각을 찾고 있습니다 :

  1. MIME 유형에 대한 나의 분석이 문제가됩니까? (업데이트에 따라 다름)
  2. 문제의 원인이 될 수있는 다른 곳과 문제를 해결하는 방법은 무엇입니까? 여전히 WHS의 IIS와 충돌 할 수 있습니까? 그렇다면 그렇다면 무엇입니까? PHP에있을 수 있습니까 (그렇지 않을 것 같음) 그렇다면 그렇다면 무엇입니까? 아파치에서 무엇을 더 확인할 수 있습니까?

업데이트 된 정보 (더 많은 [관련?] 문제가 있음)

좀 더 혼란스러워하면서 문제의 적어도 일부가 포트 변경으로 보인다는 결론에 도달했습니다 :8080. 먼저, 나는 모든 사이트에 도착할 때 생각했던 것뿐만 아니라 모든 것이다는 것을 깨닫지 못했습니다. 내 c:\Windows\System32\drivers\etc\hosts파일 에이 표현이 있습니다.

127.0.0.1   localhost
127.0.0.1   test.site1.net
127.0.0.1   test.site2.net
127.0.0.1   test.site3.com
127.0.0.1   test.site4.com
127.0.0.1   test.site5.com

그리고 내 아파치 vhosts파일 에서이 표현 :

NameVirtualHost *:8080

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
</VirtualHost>

동작은 다음 site1site4같습니다. 이미지는 표시되지 않습니다. 다른 세 사람은 전혀 나타나지 않지만 줄 것 Network Error (dns_unresolved_hostname)입니다.

그러나 localhost:8080URL 을 사용하여 WHS 시스템의 가상 호스트에서 첫 번째 사이트에 액세스하면 이미지 표시 되고 내 가상 호스트 파일의 첫 번째 사이트가 표시됩니다 (예상). 그러나 이전에 그렇지 않은 경우에도 마찬가지입니다. 따라서 site2첫 번째 위치 로 이동 하면 localhost:8080통화 를 통해 “작동”하기 시작합니다 .

URL의 구문을 통해 액세스 할 때 이미지 파일이 403( 수정, 원래 404 ) 오류 를 반환한다는 것을 알고 있으며 파일이 해당 오류를 반환하기 때문에 test.site4.com이미지가 표시되는 text/html것 같습니다. 이미지를 찾지 못하는 마임 유형 문제입니다). 그러나 이상한 점은 경로가 정확하고 이미지가 아닌 파일 (자바 스크립트 및 CSS)이 잘 나오고 있다는 것입니다.

그래서 제 생각에는 포트 스위치가로 설정되어있는 것 같습니다 8080. 내 문제는 다음과 같습니다.

  1. 호스트 및 vhost 파일이 모든 사이트를 올바르게 찾지 못하는 이유는 무엇입니까 (Windows Home Server에서 수정해야 할 다른 파일이 있습니까)?
  2. 그 사이트에서 작동하는 이유는 무엇입니까? 왜 이미지가 구체적으로 발견되지 않습니까 (403 오류, “허용됨”, 웹 사이트 폴더의 다른 파일에 액세스가 허용되는지 여부는 의미가 없습니다)?
  3. localhost:8080처음 두 문제와 관련 하여 액세스 가 왜 작동합니까?

추가 정보

로그 파일을 게시하도록 요청했습니다. 그러나 localhost:8080“기본”사이트에 대한 직접 호출을 통해 액세스 한 경우를 제외하고는 로그가 나타나지 않는 것으로 나타났습니다 .

그래서 WAMP 서비스를 끄고 URL로 이동하여 WAMP가 실행될 때와 동일한 동작을 발견했습니다. 이것은 아파치가 도메인 이름을 선택하지 않고 IIS가 여전히 도메인 이름을 제어하고 있음을 나타내는 것 같습니다 ( 누군가가 내 가정을 확인할 수 있습니까? ) . 따라서 문제는 여전히 WAMP 서버에 대한 제어권을 얻는 데 문제가 될 수 있습니다.



답변

이미지를 text / html로 제공하는 .htaccess 파일이 있습니까?

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>

답변

access.log 파일 (이미지 요청의 404 상태를 표시하는 두 줄 이상)을 제공 할 수 있으면 무엇이 잘못되었는지 확인할 수 있습니다. 나는 그것이 단순히 도메인 이름 문제 일 수 있다고 생각하거나 귀하의 사이트는 아파치가 잘못 처리하는 이미지 (추측 …)에 절대 경로를 사용할 수 있습니다


답변

아파치로 의 스레드 IIS 리디렉션 에는 매우 간단한 솔루션이 포함되어 있습니다.

마지막 항목의 작성자는 IIS의 리디렉션이 작업을 수행하기에 너무 제한적이라고 말합니다.

그의 솔루션을 사용하여 IIS가 80 이외의 다른 포트 (예 : 90)로부터 요청을 받도록 설정합니다. 그런 다음 포트 80을 포트 90으로 경로 재지 정하여 Apache를 포트 80 및 8080 모두의 수신자로 설정하십시오. IIS가 할 수없는 것


답변

DNS 문제까지 추적 했으므로 기본 결과는 구성 할 수있는 로컬 DNS 서버가 필요하다는 것입니다. 또한 Linksys E1200 라우터와 Windows Home Server에 대해서도 언급 할 수 있으므로 두 가지 방법이 있습니다.

먼저 라우터에서 타사 펌웨어 (예 : DD-WRT, OpenWRT, Tomato)를 실행하는 것을 고려할 수 있습니다. 당신이 가지고있는 것은 Broadcom 칩셋을 사용하고 있으며 적절한 플래시가 있어야합니다. DD-WRT는 지원되는 것으로 나열합니다. 저의 가장 큰 관심사는 어떻게 든 써드 파티 라우터 펌웨어 커뮤니티가 90 년대 초반에 리눅스를 다시 실행하려고하는 시점으로 떨어 졌다는 것입니다. 포럼을 탐색하여 필요한 것을 찾을 수는 있지만 DD-WRT 사이트의 라우터 데이터베이스를 신뢰할 수는 없습니다. 전반적 으로이 옵션은 자신감을 얻지 못하며 두 번째 라우터를 사용할 수 없다면 이런 종류의 조정을 좋아하지 않으면 권장 할 수 없습니다.

둘째, 이 포럼 스레드에 설명 된대로 WDP에 RDP를 설치하고 DNS 서버를 켤 수 있습니다.. 기본 접근 방식, RDP 입력, 제어판, 프로그램 추가 / 제거, Windows 구성 요소 추가 / 제거 (버튼), DNS 서버 확인란을 선택하고 다시 나오십시오. 내가 확실하지 않은 것은 이것으로 DNS 관리 콘솔을 얻는 지 여부이며 테스트 할 WHS 상자가 없습니다. 해당 콘솔을 가져 오면 관리 도구 / DNS 아래에 있습니다. 원하는대로 사용하려면 새로운 전달 영역을 추가해야합니다. 당신이하고있는 일에 대해 각 호스트에 영역을 추가하고 (예 : www.samplesite.whatever에 영역을 추가하십시오) 이름을 지정하지 않고 A 레코드 항목을 추가하면 기본값이됩니다. 존. 다른 방법은 samplesite.what에 대한 영역을 추가 한 다음 이름이 지정된 A 레코드 (예 : “www”또는 “mail”)를 추가하는 것이지만 차단하고 싶지 않은 항목을 차단할 수 있습니다. 보다 타겟팅 된 영역을 사용하면 리디렉션하지 않으려는 항목에 영향을 미치지 않습니다. 그런 다음이 상자에있는 모든 시스템을 DNS 서버로 지정합니다. 기본적으로 이것은 ISP의 DNS 서버를 완전히 우회하여 자체 외부 DNS 확인을 수행합니다. 다음 단계로 이들을 사용하려는 경우 DNS 서버 속성에서 주소를 전달자로 지정할 수 있습니다 (오른쪽 클릭 및 탐색).

셋째, 옵션 2가 작동하지 않고 옵션 1이 무섭다면 내부적으로 Linux 박스를 설정하고 DNS 서버로 설정할 수 있습니다. 그렇게하는 방법에 대한 많은 지시가 있습니다. 커서 검색은 Mark Kolich에 의해이 기사를 밝혀 냈습니다 . 너무 기울어지면 Linux 기반 호스팅을 실험하는 데 필요한 리소스를 제공 할 수도 있습니다 (예 : .NET 등의 Windows 기반 개발을 수행하지 않는 한).

DNS 서버의 Wikipedia 비교 도 사용될 수 있습니다. Simple DNS Plus (상업용), Posadis (무료, 오래된? 2004), MaraDNS (무료, 비 GUI, 살펴볼 가치가 있음) 및 Unbound (무료, Windows 바이너리 다운로드가 있으며 더 이상 파헤 치지 않음) . 이 모든 것이 Windows에서 실행되어야합니다.


답변

당신은 가지고 있어야합니다

<directory>
</directory>

</VirtualHost>허용 하기 전에
.

이 같은

<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

인터넷 프로토콜 v4 IPv4 설정 (고급 IP 설정)에서 아파치에 iis의 경우 192.168.1.100:80을 사용하고 아파치의 경우 192.168.1.200:8080을 사용합니다 (고급 IP 설정). 서로 연결된 두 개의 다른 웹 사이트에 대한 CIP 주소.