Portál AbcLinuxu, 7. května 2025 09:46
na Debianu mi běží Apache2 se spoustou firemních aplikací a potřeboval bych udělat následující věc:
Mám webovou aplikaci na cizím serveru, která je dostupná jen na jednom PC, kde zároveň běží i můj Apache (je to natvrdo nastavený na routerech, jiné PC na server s tou aplikací přístup nemají). A potřebuju, aby když uživatel zadá např.: http://MUJserver/aplikace
, tak aby mu to podstrčilo obsah na http://CIZIserver/aplikace
. Ale tak, aby o tom uživatel vůbec nevěděl a v prohlížeči mu zůstala ta původní adresa. Tozn., že nechci žádný redirect.
Takže potřebuji, aby se tam Apache připojil a ten obsah poslal tomu klientovi. Současně s tím, by také měl přepsat všechny odkazy ve stránce, aby neukazovaly na ten cizí, ale na ten můj server (mám na mysli jen ten základ adresy, čiže jen prosté nahrazení).
Zkoušel jsem mod_rewrite
i mod_proxy
, ale to nedělalo to, co jsem chtěl. Prostě to poslalo 302 Moved pernamently
a uživatele to přesměrovalo. A to je přesně to, co nechci. Uživatel nesmí nic poznat
Šlo by to nějak zařídit? Díky moc za jakoukoliv radu
Řešení dotazu:
mod_proxy
(pro získání obsahu stránky a přeposlání uživateli) a k tomu mod_filter
nebo mod_ext_filter
(pro úpravu obsahu).
mod_rewrite
říct, že to má poslat přes proxy a ne přesměrováním, parametrem P
.
No já to řeším takto, používám mod_proxy a mod_proxy_html
<IfModule mod_proxy.c> ProxyRequests On <Proxy *> Order deny,allow Allow from all </Proxy> <IfModule mod_proxy_html.c> ProxyPreserveHost On SetOutputFilter proxy-html ProxyHTMLURLMap __DOMENA__.dyndns-ip.com __DOMENA__.cz Ril </IfModule> ProxyPass / http://__DOMENA__.dyndns-ip.com/ ProxyPassReverse / http://__DOMENA__.dyndns-ip.com/ </IfModule>
<Directory /hdi/> ProxyPass http://app.local/webapp/ ProxyPassReverse http://app.local/webapp/ </Directory>
Tím jsem konečně docílil toho, že se klientovi po zadání http://mujserver/hdi/
objeví obsah na http://app.local/webapp/
. Řekněme, že existuje soubor http://app.local/webapp/stranka.php
. Takže bych ještě potřeboval dořešit odkazy. Ony se jsou v prohlížeči ve tvaru http://mujServer/webApp/stranka.php
, ale já bych potřeboval, aby tam byly jako http://mujServer/hdi/stranka.php
. (Protože adresář webapp
u mě není, ten je pouze na vzdáleném serveru.
Věděl by někdo?
Pokud vím, tak je několik jednoduchých řešení, za předpokladu, že ta aplikace používá relativní cesty v odkazech. Pokud používá něco natvrdo, tak následující řššení nebudou fungovat.
1.) Mělo by stačit nastavit Alias ve virtualhostu - http://httpd.apache.org/docs/current/mod/mod_alias.html
(netestováno, ale mohlo by chodit)
2.) Mod_rewrite a něco ve smyslu:
RewriteEngine On RewriteRule ^(.*)$ http://bablablabla.cz/$1 [L,QSA,NE]
301 Moved Permanently
a prohlížeč se přesměruje. A to je přesně to, co já nechci RewriteRule ^(.*)$ http://bablablabla.cz$1 [L,P]
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.