您的位置:首页 > 运维架构 > Nginx

Nginx 后端服务获取客户真实IP配置

2012-04-07 14:30 579 查看
转载自:http://www.save-info.com/classic/2011/03/04/917

Nginx作为HTTP代理转发前端时,后端服务无法获知前端访问客户的IP地址。本文用于解决无法获取客户真实IP的问题。

安装

编译Nginx时 多编译一个模块: (见下例中红色部分)

/configure --user=daemon --group=daemon --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib --with-http_gzip_static_module --with-http_realip_module

HTTP REALIP MODULE

这个模块允许从请求Headers里更改客户端的IP地址值(例如 实时的转发)。

它是有用的,如果nginx后面有多层负载均衡/代理,nginx转发请求时将会添加添加客户端的IP头。

http://wiki.nginx.org/NginxChsHttpRealIpModule

Nginx代理功能配置项增加 (红字部分)

server {

listen 80 default;

server_name _;

index index.php;

location / {

root /site/www/save-info.com/wwwroot;

proxy_redirect off ;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 50m;

client_body_buffer_size 256k;

proxy_connect_timeout 30;

proxy_send_timeout 30;

proxy_read_timeout 60;

proxy_buffer_size 256k;

proxy_buffers 4 256k;

proxy_busy_buffers_size 256k;

proxy_temp_file_write_size 256k;

proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

proxy_max_temp_file_size 128m;

proxy_pass http://www.save-info.com;

}

}

Nginx WEB服务功能配置项

location ~ .*\.php?$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

set_real_ip_from 64.64.24.71/26; #允许被信任的IP段

real_ip_header X-Real-IP;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: