Apache proxy_http는 ip로 리디렉션하고 호스트 이름을 설정합니다.


16

바라건대 당신은 내가 가진 프록시 문제로 나를 도울 수 있기를 바랍니다.

내가 이미 가지고있는 것

* .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 웹 응용 프로그램을 편집하는 것은 옵션이 아닙니다. 왜냐하면 정확한 사본이어야합니다 (내 결정이 아닙니다 ...)

감사!

답변:


34

아마도 mod_proxy를 mod_proxy와 함께 사용할 수 있습니다. 그래도 테스트하지 않았습니다.

따라서 app-dev vhost의 경우 다음을 가질 수 있습니다.

RequestHeader set Host "app.internal.domain"

그런 다음 다음을 추가하십시오.

ProxyPreserveHost On

2
ProxypreserveHost 설정은 트릭을 완벽하게 수행했습니다. 감사!
일부 리눅스 얼간이

3

추악한 해결책은 / 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>

2

프록시 구성을 역으로 추가 (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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.