$ _SERVER ['REMOTE_ADDR']不适用于php-fpm和nginx

时间:2011-01-29 01:57:08

标签: php nginx

我不知道为什么使用nginx这个变量$ _SERVER ['REMOTE_ADDR']不会回显IP。在其他每个Web服务器上,它都可以正常工作。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我怀疑它与nginx(网络服务器)和fastcgi之间的接口有关,而fastcgi是运行PHP的API。

根据您提供的信息,服务器API为:FPM/FastCGI

我建议你仔细看看如何用nginx安装PHP的细节(你还没有提供)。

如果你不需要nginx的性能,那么你可能会发现一个实用的解决方案就是使用apache。我在apache之前使用nginx作为反向代理,但这引入了一些额外的问题,即将REMOTE_ADDR传递给PHP(特别是mod_rpaf)。

祝你好运!

答案 1 :(得分:1)

@Michael,这是我维护的一个项目,它提供了适当的fastcgi参数,用于连接Nginx和FPM。希望它有所帮助。

fastcgi_params on Github

答案 2 :(得分:0)

这些来自nginx的conf文件

用户http; worker_processes 1;

error_log /var/log/nginx/error.log; pid /var/run/nginx.pid;

活动{     worker_connections 1024;     #ulti_accept on; }

http {    包括mime.types;     default_type application / octet-stream;     access_log /var/log/nginx/access.log;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay        on;

gzip  on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

服务器{     听80;     server_name www.fireangel.ro fireangel.ro;     access_log /var/log/nginx/localhost.access.log;

默认位置

location / {
    root    /var/www/html/fireangel.ro/public_html;
    index  index.php;
}

图像和静态内容的处理方式不同

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
  access_log        off;
  expires           30d;
  root  /var/www/html/fireangel.ro/public_html;

}

解析/ srv / http目录中的所有.php文件

location ~ .php$ {
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass   backend;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   /var/www/html/fireangel.ro/public_html$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_intercept_errors        on;
    fastcgi_ignore_client_abort     off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
}

禁用查看.htaccess& .htpassword

location ~ /\.ht {
    deny  all;
}

} 上游后端{         服务器127.0.0.1:9000; }

}