Maison  >  Questions et réponses  >  le corps du texte

Proxy inverse - proxy inverse frontal nginx, comment Apache back-end obtient-il la véritable adresse IP du visiteur ?

L'anti-génération Nginx a été écrite, et il n'y a aucun problème à vérifier le transfert des paramètres :

server
      {
              listen  80;
              server_name  www.mjj.com;
              location / {
                       proxy_pass  http://www.youjj.com;
                       proxy_redirect off;
                       proxy_set_header   Host             $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
              }
              access_log  off;
      }

Le problème maintenant est que mon programme php back-end s'appuie sur la variable $_SERVER['REMOTE_ADDR'] pour obtenir l'IP, il obtient donc l'IP du serveur de génération inverse.
Le backend est Apache et c'est un hôte virtuel, il est donc peu probable qu'il change de backend.
Le programme PHP back-end est crypté et ne peut pas être modifié.
Maintenant, je voudrais demander : existe-t-il un moyen d'attribuer X-REAL-IP ou HTTP_X_FORWARDED_FOR à REMOTE_ADDR sans modifier le programme ? Par exemple, cela peut-il être réalisé en modifiant le php.ini ?
Merci, cette question a été postée sur hostloc via : http://www.hostloc.com/thread-138304-...
J'ai rencontré le même problème, merci de me donner quelques conseils, merci

阿神阿神2713 Il y a quelques jours546

répondre à tous(5)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:06:55

    Cet article parle de la méthode d'obtention de la véritable IP du visiteur lors de la création d'un site Web avec nginx+apache front-end et back-end (cette méthode d'obtention de l'IP est plus réfléchie), mais elle nécessite également de modifier le programme PHP : http://www.ithr.org.cn/blogs/blog1.ph...

    Haha, j'ai trouvé un moyen, lisez cet article "mod_rpaf, laissez Apache sur le backend Nginx obtenir l'adresse IP Internet" : http://www.ithr.org.cn/blogs/blog1.ph...

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:06:55

    Cette exigence est un peu stricte. Si l'application peut être modifiée, utilisez mod_rpaf ;

    Non, faites simple, créez simplement un index.php et attribuez la valeur $_SERVER['REMOTE_ADDR'], puis appelez le vrai code php ;

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:06:55

    Configurez la réécriture sur Apache. Toutes les requêtes php sont réécrites dans un certain php. Ce que fait ce PHP

    .
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
    require(ORIGINAL_REQUESTED_PHP.php);

    Ou essayez HAProxy, un logiciel qui transmet à un niveau inférieur. Il n'implique pas le protocole HTTP, il n'est donc pas nécessaire de prendre en compte ces problèmes d'HEADER.

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 17:06:55

    Régler directement proxy_set_header REMOTE_ADDR $remote_addr;N'est-ce pas possible ?

    répondre
    0
  • 怪我咯

    怪我咯2017-05-16 17:06:55

    $_SERVER['REMOTE_ADDR'] ne peut pas être modifié. D'où vient la demande ? C'est ici que se trouve l'adresse 
    . C'est une bonne méthode pour ajouter un shell au-dessus de votre code crypté et attribuer une valeur comme mentionné par les précédents

    répondre
    0
  • Annulerrépondre