关于nginx做负载均衡时backend server取real ip

首先:

做为loadblance的nginx要添加下面的配置:


proxy_set_header        Host $host;

proxy_set_header        X-Real-IP $remote_addr;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

X-Real-IP和X-Forwarded-For可以2选1,也可以都打开:

更多,查看 http://blog.chinaunix.net/u/32831/showart_1908231.html

然后:

1.如果backend是apache时:apache需要添加模块rpaf

http://stderr.net/apache/rpaf/

可以用于apache 2.2

Compile and Install for 1.3:

apxs -i -a -c mod_rpaf.c

Compile and Install for 2.0:

apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

or simply try:

make

Configuration Directives:

RPAFenable On

# Enable reverse proxy add forward

RPAFproxy_ips 127.0.0.1 10.0.0.1

# which ips are forwarding requests to us

RPAFsethostname On

# let rpaf update vhost settings

# allows to have the same hostnames as in the "real"

# configuration for the forwarding Apache

RPAFheader X-Forwarded-For

# Allows you to change which header mod_rpaf looks

# for when trying to find the ip the that is forwarding

# our requests


# if DSO load module first: LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 192.168.1.23 (nginx loadblance server) RPAFheader X-Forwarded-For

2.如果是nginx做为backend的话:

做为backend的nginx在编译时需要添加模块

--with-http_realip_module

并修改nginx.conf:

set_real_ip_from   192.168.2.1;(该ip为nginx loadblance ip)
real_ip_header     X-Real-IP;
context为: http, server, location

更多,查看:

http://wiki.nginx.org/NginxHttpRealIpModule

时间: 2024-10-11 17:22:08

关于nginx做负载均衡时backend server取real ip的相关文章

Nginx做负载均衡时session共享问题详解

用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去MySQL中查询再返回. location / { set $memcached_key "$request_uri"; #设置请求memcached服务器的key memca

使用haproxy做负载均衡时保持客户端真实的IP

haproxy里添加设置项 option forwardfor option httpclose apache的日志格式修改 LogFormat "MY IP=%{X-Forwarded-For}i AAA %h %u %t" cookie_log 这样%{X-Forwarded-For} 就可以显示用户的真实IP,而%h是显示做负载均衡的haproxy的IP. 如果是公司内部系统都是为这个正式IP另外定义了一个名字ORIG_CLIENT_IP,则可以修改转发的名字. option f

nginx做负载均衡配置文件

nginx做负载均衡是在反向代理的基础上做的,代码如下: Java代码   ## Basic reverse proxy server ## ## Apache backend for www.baidu.com ## upstream henushang  { # 不过最好换成你们的服务器测试,因为我测试的时候使用jd和baidu的都没有连接成功,         # 换成自己的服务器就行了,估计是那里有限制,如果哪位知道,请指教 server www.jd.com weight=1; # 或

使用nginx做负载均衡造成的session共享问题

PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1.不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站.你访问web服务器A,产生了session然后把它放到cookie里面,当你的

Nginx 做负载均衡的几种轮询策略

网上看见nginx的upstream目前支持的5种方式的分配,摘录备忘. 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.upstream backserver {server 192.168.0.14;server 192.168.0.15;} 2.weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况.upstream backserver {server 192.168.0.14 weight=10;serv

Nginx做负载均衡无法加载css,js

配置完nginx,访问tomcat时发现,tomcat显示如下图: 从这个状态可以看出,猜测可能是css和js这些文件没有加载. 不仅如此,访问部署在tomcat项目的页面也是一样的,不同nginx访问tomcat下的项目时这样的: 通过nginx作为代理服务器,访问到的页面是这样的: 这些情况显然都是因为通过nginx作为负载均衡服务器时候,无法正常加载css和js这些文件而出现这样的问题,通过一番搜索和查找,修改了nginx下的nginx.conf配置文件才得以正常显示,修改的配置如下: 增

生产环境使用nginx做负载均衡配置的五种策略

nginx的upstream目前支持5种方式的分配1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3.ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后

nginx做负载均衡 tomcat获得客户端真实ip

因项目需要做tomcat2台机器的负载均衡,配置好负载环境后,发现tomcat的日志一律是我前置nginx代理服务器的ip 通过百度教材发现需要修改nginx的配置文件,修改代理头信息,传递给后方,后方进行获取即可. 类似教材网上很多.我经过试验也发现能用.大概的思路就行 nginx配置文件location /  处需要增加 proxy_set_header X-Real-IP $remote_addr;参数 然后tomcat 的配置文件server.xml日志定义那里需要增加%{X-Real-

nginx 做负载均衡

最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能. 首先我要在官网下载Nginx(http://nginx.org/en/download.html),目前最新版本为1.9.5版本,Linux和Windows版本我都下下来了,在两台服务器上做网站负载均衡. 在Windows版本中,将压缩包进行解压,执行命令: start nginx 这样就可以启动nginx服务了.而执行命令:nginx -s stop可以停止服务. 执行命令 nginx.