problemi di mod_rpaf con Nginx front, Apache back-end dopo l'aggiornamento di Ubuntu


10

Sto eseguendo un front-end Nginx per i file statici e inoltro a un back-end Apache per PHP e Passenger, usando mod_rpaf di Apache per impostare l'indirizzo IP remoto corretto sul back-end. Tutto ha funzionato bene fino a quando non ho eseguito l'aggiornamento a Ubuntu 12.04 (Preciso). Ora Apache riporta tutte le connessioni provenienti da 127.0.0.1.

Ecco la configurazione rilevante. Qui non è cambiato nulla con l'aggiornamento.

nginx:

proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

mod_rpaf:

<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1 ::1
    RPAFheader X-Forwarded-For
</IfModule>

Sto usando la %{X-Forwarded-For}imia direttiva LogFormat di Apache e i log di accesso mostrano l'indirizzo remoto corretto, quindi so che Nginx sta trasmettendo correttamente l'indirizzo.

In un phpinfo()test, HTTP_X_FORWARDED_FOR mostra l'indirizzo remoto corretto, ma REMOTE_ADDR è 127.0.0.1. Ciò si riflette anche nelle applicazioni PHP, come i commenti di WordPress.

Ho provato a cambiare Nginx e mod_rpaf in X-Real-IP senza alcun effetto.

È cambiato qualcosa che mi mancava?

Informazioni sulla versione rilevanti, tutto installato dal repository Ubuntu:

Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6

Risposte:


10

Mi sono appena occupato di questo. Venerdì è stato confermato un bug di Ubuntu. Puoi far funzionare di nuovo le cose cambiando:

<IfModule mod_rpaf.c>

per

<IfModule mod_rpaf-2.0.c>

in /etc/apache2/mods-available/rpaf.conf


Ho avuto esattamente lo stesso problema dopo l'aggiornamento a 12.04 e ho perso mezza giornata sul problema prima di trovare questo post. Grazie!
Kouber Saparev,


1
Per chiunque venga a questo post dopo l'aggiornamento a 14.04 questa correzione non sarà più applicabile; invece vorrai usare mod_remoteipinvece di mod_rpaf.
Stefan Magnuson,

1

mod_rpaf sembra essere stato deprecato in Debian Jessie e l'ulteriore sviluppo è stato interrotto. Passa a mod_remoteip, che è un modulo predefinito in Debian Jessie.


0

Solo un aggiornamento a questa domanda. Il formato delle variabili utilizzate da mod_rpaf è cambiato: Apache rifiuta di iniziare con quelle sopra elencate attualmente (RPAFenable, RPAFsethostname, RPAFproxy_ips, RPAFheader).

Il nuovo formato è il seguente:

LoadModule              rpaf_module modules/mod_rpaf.so
RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1 10.0.0.0/24
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.