Apache 서비스용 포트 8080으로 전달하려면 Windows 로컬 호스트(포트 80)를 가져옵니다.

Apache 서비스용 포트 8080으로 전달하려면 Windows 로컬 호스트(포트 80)를 가져옵니다.

최근 발견

IIS를 다시 포트로 설정하고 WHS 컴퓨터에 80연결하면 http://localhost/"이 웹 사이트의 보안 인증서에 문제가 있습니다"라는 경고 페이지가 나타납니다. 어쨌든 "계속"하면 a 및 https://localhost/Remote/logon?ReturnUrl=%2fremote에 대한 Windows Home Server 2011 원격 웹 액세스에 대해 이 URL이 나타납니다 . 지금은 확실히 기억할 수 없지만 원래 이 문제를 제기한 것은 아니라고 생각합니다. 그러나 이는 포트에 관계없이 localhost에 액세스하려는 모든 시도에 영향을 미칠 수 있는 것처럼 보입니다.usernamepasswordhttp://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>

이전 업데이트: 내가 무엇을믿었었다주요 문제가 됨(하위 문제일 수 있음)

8080동일한 시스템에서 실행 중인 Apache(IIS 아님)가 페이지 제공 요청을 선택하도록 Windows Home Server(IIS 실행)가 특정 로컬 호스트 URL을 포트로 전달하도록 하려면 어떻게 해야 합니까 ?

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

다운로드했습니다애플리케이션 요청 라우팅~에서내가 찾은 사이트의 팁조사 중이지만 살펴보니 도움이 될지 아닐지 잘 모르겠습니다. (내 희망은 포트에 대한 일부 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 및 Apache의 IIS가 문제를 일으킬 것이라고 말하지만 일부 사이트에서는 올바르게 설정하면 전혀 문제가 없다고 언급했습니다.) -기본적으로 포트 충돌이 없는지 확인하십시오.)

그래서 나는왐프(64비트 버전)을 WHS 컴퓨터에 연결하고 Apache 구성 파일의 설정을 httpd포트에서 수신 대기하도록 변경하여 8080IIS와 충돌이 발생하지 않도록 했습니다. XP 컴퓨터에서와 같이 가상 호스트 파일을 설정했지만 포트도 변경되었습니다.

원래,모든 게 잘 돌아가는 것 같았어(단, 업데이트 참조)제외하고...

(원래) 문제

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

그러나 내가 알아차린 것은 Type이미지 정보 상자에 등이 아닌 가 표시된다는 것 text/html입니다 . 이는 아래 정보에서 경로(주소) 정보를 표시하는 부분입니다. 해당 섹션에서는 파일 자체를 인식합니다. 또는 중 하나 입니다 .PNG ImageJPEG ImageTypeImageBackground

그러나 이러한 사실에도 불구하고 html(실제로는 PHP에서 생성된 html) 내에서 이미지의 올바른 MIME 유형(내 가정)을 인식하는 대신 이미지(요소 또는 imgCSS background-image)를 다음과 같이 처리하려고 시도하는 것으로 보입니다. 텍스트가 표시되므로 나에게 아무것도 제공되지 않습니다! 하지만 이유를 알 수 없습니다. mimeApache 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에 어떤 것이든 있을 수 있습니까(그렇지 않을 것 같습니다). 그렇다면 무엇입니까? Apache에서 또 무엇을 확인할 수 있나요?

업데이트된 정보(추가 [관련?] 문제 포함)

좀 더 혼란스러워하면서 문제의 적어도 일부가 port 로의 변경인 것 같다는 결론에 도달했습니다 :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표시되지만 이미지는 없습니다. 나머지 3명은 전혀 등장하지 않지만 Network Error (dns_unresolved_hostname).

localhost:8080그러나 URL을 사용하여 WHS 시스템의 가상 호스트에 있는 첫 번째 사이트에 액세스하면 ,그런 다음 이미지하다나타나다, 내 vhosts 파일의 첫 번째 사이트도 표시됩니다(예상된 결과입니다). 그러나 이전에는 그렇지 않았던 경우에도 마찬가지입니다(따라서 site2첫 번째 위치로 이동하면 localhost:8080호출을 통해 "작업"이 시작됩니다).

내 이미지 파일이 403(정정, 원래는 404라고 말했어요) URL의 구문을 통해 액세스할 때 오류가 발생했으며 파일이 해당 오류를 반환하기 때문에 test.site4.com내 이미지가 표시되는 것 같습니다 text/html(그래서 지금은 이미지를 찾는 데 실패하는 만큼 MIME 형식 문제는 아닌 것 같습니다) ). 그러나 이상한 점은 경로가 정확하고 이미지가 아닌 파일(javascript 및 css)이 제대로 표시된다는 것입니다.

그래서 내 생각에는 아마도 포트 스위치가 8080. 지금 내 문제는 다음과 같습니다

  1. 내 호스트 및 가상 호스트 파일이 모든 사이트를 올바르게 찾지 못하는 이유는 무엇입니까(Windows Home Server에서 수정해야 하는 다른 파일이 있습니까)?
  2. 작동하는 사이트에서는 왜 이미지가 특별히 발견되지 않습니까? (403 오류가 발생하면 "금지"라고 생각하며 웹 사이트 폴더의 다른 파일에 액세스가 허용되는 경우에는 의미가 없습니다)?
  3. localhost:8080처음 두 가지 문제와 관련하여 액세스가 작동하는 이유는 무엇입니까 ?

추가 정보

로그 파일을 게시해 달라는 요청이 있었습니다. 그러나 localhost:8080"기본" 사이트에 대한 직접 호출을 통해 액세스한 경우를 제외하고는 발생하는 로그가 없다는 것을 발견했습니다 .

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

답변1

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

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

답변2

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

답변3

스레드IIS가 Apache로 리디렉션당신과 반대 방향으로 진행되는 매우 간단한 솔루션이 포함되어 있습니다.

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

그의 솔루션을 사용하면 80이 아닌 다른 포트(예: 90)에서 요청을 수신하도록 IIS를 설정할 수 있습니다. 그런 다음 포트 80을 포트 90으로 리디렉션하여 Apache를 포트 80과 8080 모두에 대한 수신자로 설정합니다. Apache는 분명히 다음을 수행합니다. IIS가 할 수 없는 것.

답변4

당신은 가지고 있어야

<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을 사용합니다. 2개의 클래스 C IP 192.168.1.100이 있고 192.168.1.200을 추가합니다. 이는 클래스 때문에 SEO에도 도움이 됩니다. 서로 연결되는 2개의 서로 다른 웹사이트에 대한 C IP 주소입니다.

관련 정보