suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Reverse-Proxy - Nginx-Front-End-Reverse-Proxy. Wie erhält der Back-End-Apache die tatsächliche IP des Besuchers?

Nginx-Anti-Generierung wurde geschrieben und es gibt kein Problem bei der Überprüfung der Parameterübertragung:

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;
      }

Das Problem besteht nun darin, dass mein Back-End-PHP-Programm auf die Variable $_SERVER['REMOTE_ADDR'] angewiesen ist, um die IP zu erhalten, sodass es die IP des Reverse-Generation-Servers erhält.
Das Backend ist Apache und es handelt sich um einen virtuellen Host, daher ist es unwahrscheinlich, dass das Backend geändert wird.
Das Backend-PHP-Programm ist verschlüsselt und kann nicht geändert werden.
Jetzt möchte ich fragen: Gibt es eine Möglichkeit, REMOTE_ADDR X-REAL-IP oder HTTP_X_FORWARDED_FOR zuzuweisen, ohne das Programm zu ändern? Kann dies beispielsweise durch eine Änderung der php.ini erreicht werden?
Vielen Dank, diese Frage wurde auf hostloc gepostet über: http://www.hostloc.com/thread-138304-...
Ich bin auf das gleiche Problem gestoßen, bitte geben Sie mir einen Rat, danke

阿神阿神2835 Tage vor622

Antworte allen(5)Ich werde antworten

  • 给我你的怀抱

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

    这篇文章中说了在nginx+apache类前后端搭建网站时获取访客真实ip的方法(这个获取IP的方法考虑得比较周全),不过也是要你修改PHP程序的:http://www.ithr.org.cn/blogs/blog1.ph...

    哈哈,找到方法了,看这篇文章“mod_rpaf , 令 Nginx 后端的 Apache 获取到互联网 IP”:http://www.ithr.org.cn/blogs/blog1.ph...

    Antwort
    0
  • 淡淡烟草味

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

    这个要求有点苛刻啊 ,如果ap能改,就用mod_rpaf;

    不能,简单一点吧,直接套一个 index.php 然后赋值 $_SERVER['REMOTE_ADDR'] , 再调用真实的php代码 ;

    Antwort
    0
  • 我想大声告诉你

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

    在apache那邊設置一下 rewrite,所有的php請求都rewrite到某個 php ,該PHP做的事情就是

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

    或者试试 HAProxy 这种在更底层进行转发的软件,不涉及到HTTP协议,就不用考虑这些HEADER的问题了。

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 17:06:55

    直接设置 proxy_set_header REMOTE_ADDR $remote_addr; 不行么?

    Antwort
    0
  • 怪我咯

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

    $_SERVER['REMOTE_ADDR'] 是不能改动的 从哪里来的请求 这个地址就是哪里
    像前面几位所说的方法 在你的加密的代码上面加一层壳子 赋个值是不错的方法

    Antwort
    0
  • StornierenAntwort