2016-11-06 3 views
0

i reale Besucher ip zu senden bin versucht nginx von phpphp vorwärts Besucher ip nginx

Dies ist die Situation

Server A - exmaple.com/a.php

Server B - Beispiel/file.txt

, wenn der Zugriff exmaple.com/a.php es datei.txt auf Server b

aber nginx Logs zeigen Server wie gewünscht herunterladen Ein ip gelegen herunterladen, denke ich, dass die korrekte c AVerwenden die datei.txt über a.php auf Server heruntergeladen A

so, wie kann ich die IP des Besuchers anstelle des Servers

habe ich bereits in meinem nginx Config

 proxy_set_header X-Real-IP $remote_addr; 
nginx senden

danke

+0

Bitte fügen Sie Ihren Versuch hinzu, damit wir Ihnen weiter helfen können. – spencdev

+0

hinzugefügt meine PHP-Datei – Lolak

Antwort

1

Sie benötigen würde es Ihre Anfrage-Header hinzuzufügen.

$opts['http']['header'] = 'X-Real-IP: ' . $_SERVER['REMOTE_ADDR'] . "\r\n"; 

Sie würden auch Nginx konfigurieren müssen, dies zu akzeptieren, mit set_real_ip_from Konfigurationsrichtlinien.

Eine bessere Option wäre die Verwendung von cURL (siehe @ Terra's Antwort), die Ihnen ein bisschen mehr Flexibilität als die fopen Wrapper bietet.

Die beste Option ist jedoch nur, um Nginx dies tun zu lassen. Es ist weitaus effizienter, als all diese Daten über PHP zu übertragen. Verwenden Sie proxy_pass.

+0

ich bin etwas verwirrt hier Sorry, Nginx $ remote_addr gibt Server A IP, wie kann ich es mir Besucher IP-Adresse geben – Lolak

+0

nvm ich finde es heraus, ich war auch hinter cf, also musste ich dort auch ips hinzufügen, danke für die hilfe – Lolak

+0

aus irgendeinem grund, wenn ich dies mit video url das video ist nicht suchbar irgendeine idee? $ opts ['http'] ['header'] = "Bereich:". $ _ SERVER ['HTTP_RANGE']. "\ r \ nKeks: video_key =". $ _ SERVER ['HTTP_RANGE']; $ opts ['http'] ['header'] = 'X-Real-IP:'. $ _SERVER ['REMOTE_ADDR']. "\ r \ n"; – Lolak

2

A Server: add X-Real-IP Header mit IP-Client ausgehende Anfrage. Dieser Teil hängt von Ihrem Code ab. Zum Beispiel, wenn CURL, müssen Sie curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-Real-IP: '.$_SERVER['REMOTE_ADDR'] ]) hinzufügen.

Server B: Sie müssen Nginx konfigurieren. In den nginx des server Konfigurationsblock:
set_real_ip_from SERVER_A_IP;
real_ip_header X-Real-IP; (nicht erforderlich, da Standardwert)

+0

danke, kann $ ch durch etwas anderes ersetzt werden? Weil ich es nicht zu meiner Perl-Datei hinzufügen kann – Lolak

+0

@Lolak Perl? Wo benutzt du Perl? – Brad

+0

der PHP-Code oben wird per Perl-Datei generiert – Lolak