Leiten Sie die echte IP vom Nginx-Proxy an den PM2-Webserver weiter

Leiten Sie die echte IP vom Nginx-Proxy an den PM2-Webserver weiter

Ich habe eine API, die von einem Mean Stack betrieben und mit PM2 bereitgestellt wird. Sie stellt einen HTTP-Endpunkt bereit unterhttp://89.89.89.89:8080(Beispiel-IP) – Ich kann über meinen Browser direkt darauf zugreifen.

Ich habe Nginx installiert und verwende die folgende Konfiguration, um Anfragen an die API auf demselben Server umzuleiten.

server {
        listen 8081;
        server_name example.com;

        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://127.0.0.1:8080;
        }
}

Das oben genannte funktioniert und ich kann auf die API unter zugreifenhttp://89.89.89.89:8081(Nginx-Port), allerdings kommen die Anfragen an das Ziel von 127.0.0.1. Ich möchte die IP-Adresse des echten Benutzers an PM2 weiterleiten. Ich habe nach verschiedenen Lösungen gesucht und sie ausprobiert, aber es funktioniert nicht.

Wir sind für jede Hilfe und jeden Hinweis in die richtige Richtung dankbar.

Antwort1

Sie benötigen Nginx mit Modul --with-http_realip_module, sonst sollte es auch ohne gehen.

Die Prüfung, ob das Modul vorhanden ist, wird ausgeführt nginx -v.

Ohne das Modul sollten Sie in Ihrem Konfigurationsprotokollformat Folgendes angeben. BEISPIEL:

log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent"';

access_log  /var/log/nginx/access.log  main;

real_ip_header X-Forwarded-For;

Starten Sie anschließend Nginx neu und überprüfen Sie die Protokolle.

Wenn das Modul installiert ist, müssen Sie Ihre Konfiguration entsprechend ändern

# Directives for setting real_ip/XFF IP address in log files
set_real_ip_from    192.168.101.10; #IP address of master LB
real_ip_header      X-Forwarded-For;

Das Real-IP-Modul wird verwendet, um die Quell-IP-Adresse des Clients auf den Wert im Header zu ändern. Wir wollten die echte IP-Adresse für Datenverkehr festlegen, der von einem Server mit der IP-Adresse 192.168.101.10 kommt.

Auch hier muss nach den Änderungen der Nginx-Dienst neu gestartet werden.

verwandte Informationen