Jediné, co je potřeba u RealIP pohlídat je to, aby to zpracovávalo hlavičky jen z důvěryhodné proxy, protože jinak by tam šlo podvrhnout IP adresu.
Nabíme se o nastavení nginxu, který funguje jako proxy server. Ten před sebou žádný jiný proxy server nemá, tudíž bere vždy IP adresu klienta. IP adresy v HTTP hlavičkách naopak musí mazat, protože pokud je taková hlavička přítomná v požadavku od klienta, je to pokus o podvrh.
Když použijete RealIP, na bude to fungovat hned.
RealIP se používá v případě, kdy nginx je cílový server, který má před sebou nějaký proxy server. Tady je situace opačná – nginx je proxy server, který předává požadavky dál do WordPressu.
Proxy server funguje tak, že klient (třeba prohlížeč) neváže TCP/IP spojení s proxy serverem. Proxy server přečte požadavek, naváže nové spojení s cílovým serverem ze své IP adresy (z jiné samozřejmě nemůže), pošle cílovému serveru požadavek klienta (případně nějak upravený) a do požadavku do speciálních hlaviček předá IP adresu původního klienta.
Když cílový server (v tomto případě WordPress na nějakém PHP) zjišťuje adresu klienta, musí se nejprve podívat, zda je tam nastavená příslušná hlavička, a teprve pokud není, použije adresu klienta z TCP/IP spojení. To, že se má používat IP adresa z HTTP hlaviček, je obvykle potřeb zapnout – jinak by klient mohl podvrhnout svou IP adresu tak, že by nastavil tu HTTP hlavičku. Proto se přebírání IP adresy z HTTP hlaviček zapíná jenom tam, kde jsem za proxy serverem a vím, že HTTP hlavičku mi bude nastavovat ten.