Apache proxy_http IP'ye yönlendirme ve ana bilgisayar adını ayarlama


16

Umarım sahip olduğum vekil sorununda bana yardımcı olabilirsiniz.

Zaten sahip olduğum şey

* .Proxy.domain ile * .intern.domain arasındaki proxy isteklerine apache http ters proxy ayarladım. Apache, dahili web uygulamalarıma harici bir ağdan erişmenin tek yoludur.

Misal:

app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain

Bu harika çalışıyor, ancak aşağıdaki sorun var.

Sorun
Aşağıdaki istekleri proxy yapmak istiyorum:

app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain

Bu sorun değil, ancak maalesef app-dev sunucusu uygulama sunucularının web uygulamasının tam bir kopyasını çalıştırıyor ve bu web uygulaması yalnızca ana bilgisayar adına yanıt veriyor (app.intern.domain)

Yapmam gereken şey proxy.

app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)

/ Etc / hosts içine "10.0.1.2 app.internal.domain" ekleyerek ikinci şeyi yapabilirim, ama bu aynı zamanda app.proxy.domain'in dev sunucusuna ineceği anlamına gelir.

/ Etc / hosts girişini sadece uygulama-dev.proxy.domain için vhost yapılandırma dosyasının içinde ayarlamak için bir seçenek arıyorum, böylece diğer tüm vhost config sadece app.intern.domain için DNS kullanacak.

Düşünceler ...

Apache Config'e anlatmanın bir yolu var mı,

ProxyPass / http://10.0.1.2/

ancak app.intern.domain'i ana bilgisayar adı olarak gönderilsin mi?

Tam sunucular olması gerektiği için dev-sunucuları web uygulamasını düzenlemek-app-dev dinlemek için bir seçenek değildir (benim kararım değil ...)

Teşekkürler!

Yanıtlar:


34

Muhtemelen mod_headers mod_proxy ile birlikte kullanabilirsiniz. Yine de test etmedim.

App-dev vhost için sahip olabilirsiniz:

RequestHeader set Host "app.internal.domain"

ve sonra eklersiniz:

ProxyPreserveHost On

2
ProxypreserveHost ayarı işe yaradı. Teşekkürler!
Bazı Linux Nerd

3

Çirkin çözüm, app.internal.domain'i localhost'a yönlendirmek için / etc / hosts komutunu kullanmak (daha çok: kötüye kullanmak) ve ardından Apache'yi her biri uygulamanız ve uygulama geliştiriciniz için bir tane olmak üzere iki ek bağlantı noktası dinleyecek şekilde yapılandırmaktır. Yani proxy'yi iki kez tersine çevirin:

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

Ters proxy'nin yapılandırmasına ekleyin (foe app-dev.proxy ..):

RequestHeader edit Host ^app-dev.proxy.domain app.proxy.domain

Mod_headers'ı önceden etkinleştirmeniz gerekir:

a2enmod headers

Dahili sunucu 10.0.1.2'de olmalıdır

ServerName app.proxy.domain
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.