Porównaj ceny domen i usług IT, sprzedawców z całego świata

Przekieruj żądanie IP z Nginx do dzienników Apache


Używam nginx jako zewnętrznego zwrotnego serwera proxy dla Apache, mam następującą konfigurację w nginx:
location/{
if (-f $request_filename) {
add_header X-Static hit;
access_log off;
} if (!-f $request_filename) {
proxy_pass [url=https://127.0.0.1:8000;]https://127.0.0.1:8000;[/url]
add_header X-Static miss;
}

Z nasłuchiwaniem apache na porcie 8000 lokalnie. Kiedy patrzę na dzienniki Apache, wszystkie żądania pochodzą z 127.0.0.1:443 (gdzie znajduje się nginx). Chcę przekierować prawdziwy adres IP na apache, aby poprawnie zapisał go w dziennikach.
Próbowałem dodać następujące wiersze do bloku lokalizacji, ale bezskutecznie
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Czy brakuje mi tu kroku? Czy muszę zmienić format dziennika Apache? Aktualnie używany jest domyślny dziennik łączony.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

musisz zmienić format dziennika Apache, aby obsługiwał x-forward
na przykład
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined

Następnie możesz użyć
CustomLog logs/access_log combined

Więc ostatnim wpisem w twoim logu będzie nagłówek, który nginx ustawia dla prawdziwego adresu IP. Możesz oczywiście zmienić kolejność w linii LogFormat.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spojrzeć na

mod_rpaf moduł apache
http://stderr.net/apache/rpaf/
W deb/ubuntu możesz zainstalować nazwę pakietu libapache2-mod-rpaf
Po instalacji dodaj swój adres IP nginx do parametru RPAFproxy_ips w/etc/apache2/mods-available/rpaf.conf
<IfModule mod_rpaf.c>
RPAFenable On RPAFsethostname
On RPAFproxy_ips 127.0.0.1
</IfModule>

Zrestartuj Apache i powinieneś zobaczyć prawidłowe adresy IP w swoich dziennikach.
Zachowałbym to również w twojej konfiguracji nginx:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zmieniasz tylko nagłówek HTTP, a nie sposób, w jaki Apache widzi połączenie (z Nginx).

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się