Co se posralo
Po aktualizaci Apache (konkrétně verze 2.4.58 na Ubuntu) začaly některé proxy požadavky přes Nginx Proxy Manager (NPM) házet chybu:
Misdirected Request
The client needs a new connection for this request as the requested host name does not match the Server Name Indication (SNI) in use for this connection.
Apache/2.4.58 (Ubuntu) Server at valasi.eu Port 443
A tím začalo peklo. V prohlížeči to padá, v logách to plive tuhle srajdu, a člověk od pasu neví, co se děje.
Kde je zakopanej pes
Apache v této verzi opravil bezpečnostní díru CVE-2007-6203, která se týká SNI (Server Name Indication). Jinými slovy – pokud příchozí požadavek nemá správně nastavené SNI, Apache ho teď pošle do kytek.
Problém je, že Nginx Proxy Manager (a obecně reverzní proxy) si dřív s SNI nedělaly hlavu. Jenže po téhle opravě už Apache očekává, že i backend spojení má správně nastavené SNI podle Host.
Řešení? Dodělat to ručně.
Musíme donutit Nginx, aby posílal správné SNI do Apache.
Krok 1: Vytvořit fixovací soubor
Na hostiteli, kde běží NPM (např. Docker container app), vytvoř tento soubor:
/data/nginx/custom/server_proxy.conf
A do něj napchat:
proxy_ssl_server_name on;
proxy_ssl_name $host;
Tohle vnutí správný SNI do proxy požadavků směřujících na HTTPS backendy – tedy třeba právě na Apache.
Krok 2: Restartni kontejnery
Jestli máš NPM v Dockeru s composerem, pak:
docker-compose down
docker-compose up -d
Případně pokud používáš jinou správu kontejnerů, restartuj to podle svého.
POZOR: Pokud ti to při restartu hází nějaký ten debilní
ContainerConfigerror, mrkni na to, jestli nemáš nějaký nekompatibilní nebo rozbitý image. Pomáhá třeba smazat kontejnery a znovu sestavit. (docker-compose pull)
Krok 3: Zkontroluj
Zkus požadavek znovu přes browser. Chyba Misdirected Request by měla být v fuč.
Shrnutí
- Apache opravil starou bezpečnostní díru CVE-2007-6203.
- Proxy požadavky bez správného
SNIApache teď odmítá. - Nginx Proxy Manager to musíme naučit posílat.
- Stačí přidat dvě direktivy do
server_proxy.confv/data/nginx/custom/.
A je klid.
Doufám, že ti to ušetří pár hodin života jako mě. Jestli ne, tak aspoň víš, kam házet flašky 😅
