Me encuentro con una aplicación la cual tengo detrás de un frontal de nginx. La cuestión es que la petición al servidor llega con la IP interna del frontal de nginx en lugar de la IP real del cliente.
Para ello tendremos que realizar una configuración en el frontal de nginx para pasar la IP real del usuario y otra en el nginx de la aplicación para que interprete correctamente la IP.
Frontal nginx
root@frontal1-nginx:~# vi /etc/nginx/sites-enabled/app.capa8.net server { listen 80; server_name app.capa8.net; return 301 https://app.capa8.net$request_uri; #root /var/www/html/; } server { server_name app.capa8.net; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/app.capa8.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/app.capa8.net/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_trusted_certificate /etc/letsencrypt/live/app.capa8.net/chain.pem; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $remote_addr; proxy_pass http://192.168.100.15:80; } }
nginx Aplicación
Siendo set_real_ip_from la subred por donde pueden venir las peticiones de proxy
root@app:~# vi /etc/nginx/sites-enabled/app server { listen 80; server_name app.capa8.net; set_real_ip_from 192.168.100.0/24; real_ip_header X-Real-IP; real_ip_recursive on; location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi-app.sock; } # /static location /static/ { autoindex off; root /var/www/app/web/; } location /static/admin { autoindex off; root /var/www/app/venv/lib/python3.5/site-packages/django/contrib/admin/; } }
Reiniciamos ambos nginx y comprobamos en los logs que la ip pasa correctamente.
Pingback: ip real con frontal proxy nginx, backend apache y wordpress – Blackhold
Pingback: ip real con frontal proxy nginx, backend apache y wordpress Blackhold - Blog de Informática