바라건대 당신은 내가 가진 프록시 문제로 나를 도울 수 있기를 바랍니다.
내가 이미 가지고있는 것
* .proxy.domain에서 * .intern.domain으로 요청을 프록시하기 위해 아파치 http 리버스 프록시를 설정했습니다. 아파치는 외부 네트워크에서 내부 웹 애플리케이션에 접근 할 수있는 유일한 방법입니다.
예:
app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain
이것은 모두 훌륭하게 작동하지만 다음과 같은 문제가 있습니다.
문제
다음 요청을 프록시하고 싶습니다.
app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain
이것은 문제가되지 않지만 불행히도 app-dev 서버는 app 서버 웹 응용 프로그램의 정확한 사본을 실행하며이 웹 응용 프로그램은 호스트 이름 (app.intern.domain)에 대해서만 응답합니다.
그래서 내가해야 할 일은 다음을 프록시하는 것입니다.
app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)
/ etc / hosts에 “10.0.1.2 app.internal.domain”을 추가하여 두 번째 작업을 수행 할 수 있지만 이는 app.proxy.domain이 dev-server에 상주 함을 의미합니다.
app-dev.proxy.domain의 vhost 구성 파일 내에서만 / etc / hosts 항목을 설정하여 다른 모든 vhost 구성이 app.intern.domain에 DNS를 사용하도록 옵션을 찾고 있습니다.
생각 …
아파치 설정을 알려주는 방법이 있습니까?
ProxyPass / http://10.0.1.2/
하지만 app.intern.domain을 호스트 이름으로 보내시겠습니까?
app-dev를 듣기 위해 dev-servers 웹 응용 프로그램을 편집하는 것은 옵션이 아닙니다. 왜냐하면 정확한 사본이어야합니다 (내 결정이 아닙니다 …)
감사!
답변
아마도 mod_proxy를 mod_proxy와 함께 사용할 수 있습니다. 그래도 테스트하지 않았습니다.
따라서 app-dev vhost의 경우 다음을 가질 수 있습니다.
RequestHeader set Host "app.internal.domain"
그런 다음 다음을 추가하십시오.
ProxyPreserveHost On
답변
추악한 해결책은 / etc / hosts를 사용하는 대신 (오용) app.internal.domain이 localhost를 가리 키도록 한 다음 Apache가 각 앱 및 app-dev에 하나씩 두 개의 추가 포트를 수신하도록 구성하는 것입니다. 따라서 프록시를 두 번 리버스하십시오.
Listen 80
Listen 127.0.0.1:8001
Listen 127.0.0.1:8001
<VirtualHost *:80>
ServerName app.proxy.domain
ProxyPass / http://app.internal.domain:8001
</VirtualHost>
<VirtualHost *:80>
ServerName app-dev.proxy.domain
ProxyPass / http://app.internal.domain:8002
</VirtualHost>
<VirtualHost 127.0.0.1:8001>
ServerName app.internal.domain
ProxyPreserveHost On
ProxyPass / http://10.0.1.1/
</VirtualHost>
<VirtualHost 127.0.0.1:8002>
ServerName app.internal.domain
ProxyPreserveHost On
ProxyPass / http://10.0.1.2/
</VirtualHost>
답변
프록시 구성을 역으로 추가 (app-dev.proxy ..) :
RequestHeader edit Host ^app-dev.proxy.domain app.proxy.domain
미리 mod_headers를 활성화해야합니다 :
a2enmod headers
내부 서버 10.0.1.2는
ServerName app.proxy.domain