Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Real IP for Apache (Nginx reverse proxy)

NGINX 1.10 + APACHE 2.4 real IP for reverse proxy

Edit nginx conf

default.conf or what you want

vim /etc/nginx/conf.d/default.conf

add proxy_set_header for php files

   location ~ \.php$ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;

        proxy_pass   http://127.0.0.1:8080;
    }

Add apache remoteip mod with

a2enmod remoteip

create a new conf file for Apache

vim /etc/apache2/conf-available/remoteip.conf

and add

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1

Add active this conf with

a2enconf remoteip

restart apache

service apache2 restart

And now apache logs and $SERVER['REMOTE_ADDR'] have the real IP ;-)

@agalera
Copy link

agalera commented Jun 3, 2019

Thanks!

@phughes3866
Copy link

phughes3866 commented Dec 8, 2021

Thanks. Have apache serving webdav behind nginx proxy. This worked great for logging the origin IP address to apache's error.log file so that fail2ban could see any offending bad-login IP (rather than the localhost all the time). Used in combination with the correct nginx proxying header: proxy_set_header X-Forwarded-For $remote_addr;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment