Portál AbcLinuxu, 8. května 2025 00:57

Dotaz: Apache reverse proxy https

11.9.2020 16:40 pou | skóre: 18
Apache reverse proxy https
Přečteno: 430×
Odpovědět | Admin
Ahoj,
mám server na kterém mám subdoménu neco.server.cz, která směřuje na docker (docker je apache2 který je přesměrován na lokální port 8081).
Nyní se snažím nastavit https (pomocí cerbot) - postupoval jsem tak jak na jiných subdoménách, kde to funguje (které však nemám v kontejnerech).

Stránka "http://neco.server.cz" funguje bez problému ( musel jsem přidát atribut ProxyPreserveHost On bez toho se nenačítaly obrázky protože se chtěli načítat z adresy http:127.0.0.1:8081).
Přesměrování z http na https je také správné (certifikát je platný ).
Načte se však pouze základní - stránka zbylé odkazy firefox odmítne načítat protože mají odkaz na http stránku:

Content Security Policy: Nastavení stránky zablokovalo načítání zdroje na http://neco.server.cz/xxxxxxxxx 

Subdoména neco.server.cz tedy generuje linky na http:127.0.0.1:8081/xxxxxx které díky ProxyPreserveHost On se přepíší na http:neco.server.cz:8081/xxxxxx já však potřebuju přepsat i to http na https.

Prosím o radu, moc děkuji
Nastaveni neco.server.cz:
VirtualHost *:80
    ServerName neco.server.cz:
    ProxyPass /  http://127.0.0.1:8081/  flushpackets=on
    ProxyPassReverse / http://127.0.0.1:8081/ flushpackets=on

   RewriteEngine on
   ProxyPreserveHost On
   RewriteCond %{SERVER_NAME} =neco.server.cz:
   RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
VirtualHost
Nastaveni pro ssl (vygenerovano cerbotem a editovano mnout):
IfModule mod_ssl.c
VirtualHost *:443
    ServerName neco.server.cz
    ProxyPass /  http://127.0.0.1:8081/  flushpackets=on
    ProxyPassReverse / http://127.0.0.1:8081/ flushpackets=on
    ProxyPreserveHost On
    SSLCertificateFile /etc/letsencrypt/live/neco.server.cz/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/neco.server.cz/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
/VirtualHost
/IfModule
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.9.2020 17:12 MP
Rozbalit Rozbalit vše Re: Apache reverse proxy https
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja pouzivam obecne na http->https toto pravidlo (ale nepouzivam proxy):

RewriteRule ^(.*)$ https://%{SERVER_NAME}$! [L,R]

11.9.2020 17:13 MP
Rozbalit Rozbalit vše Re: Apache reverse proxy https
Ten "$!" na konci toho pravidla je samozrejme "$1"
11.9.2020 18:25 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Apache reverse proxy https
Odpovědět | | Sbalit | Link | Blokovat | Admin
ProxyPreserveHost zařídí jenom to, že se dál pošle původní hlavička Host. Vygenerované HTML nijak nemění. A ani bych nespoléhal na to, že budete vygenerované HTML upravovat na proxy serveru – to nikdy nebude fungovat spolehlivě. Raději generujte správné adresy už na cílovém serveru. Nejlepší je ale veškeré odkazy v rámci serveru mít relativní vůči hostname – pak vůbec nemusíte na cílovém serveru řešit doménové jméno.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.