nginx负载均衡SSL安装

11 年 ago jony nginx负载均衡SSL安装已关闭评论

SSL,这个目前支持得算是比较好的,在负载均衡器上开启ssl功能,监听443端口,将证书放在Nginx代理上,非后面的web服务器,轻构解决掉问题,详细见以下http.conf配置文件

  1. server
  2.     {
  3.         listen  443;
  4.         server_name www.cn7788.com;
  5.         ssl on;
  6.         ssl_certificate /usr/local/nginx/keys/www.cn7788.com.crt;
  7.         ssl_certificate_key /usr/local/nginx/keys/www.cn7788.com.key;
  8.         ssl_protocols  SSLv3 TLSv1;
  9.         ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;
  10.         }

但问题又来了,这么有个问题,跑在后方 apache 上的应用获取到的IP都是Nginx所在服务器的IP ,或者是本机 127.0.0.1 。最明显就是查看 apache 的访问日志。就会见到来来去去都是内网的IP;虽然可以通过Nginx日志来判断客户的client,但有些考虑不周全的应用,例如 Tattertools (一个博客程序) 就会犯误,后台的访问日志死活显示访客数 1,ip来自 127.0.0.1。这时候就要想办法来处理了。你可以通过修改 nginx proxy 的参数令后端应用获取到Nginx 发来的请求报文获取到外网的IP。

  1. proxy_set_header        Host $host;
  2. proxy_set_header        X-Real-IP $remote_addr;
  3. proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

这仅仅只是让Nginx获到到外网IP,Apache未必买帐呢,即Aapche端也需要设置,搜寻了一下,发现了apache这一个来自第三方的mod 配合Nginx proxy 使用。

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

下载:http://stderr.net/apache/rpaf/download/

最新版本是 mod_rpaf-0.6.tar.gz

安装也相当简单。

# tar zxvf mod_rpaf-0.6.tar.gz 下载后解压# cd mod_rpaf-0.6

Apache 的目录按自己的环境修改,并选择相应的安装方式:

#/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

完成后会在 http.conf  的 LoadModule 区域为你多加了一行。

LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so 经 apache 2.2.6 的实验,使用这一行启动 apache 的时候会报错的。

所以改为:

LoadModule rpaf_module        modules/mod_rpaf-2.0.so

并在下方添加

  1. RPAFenable On
  2. RPAFsethostname On
  3. RPAFproxy_ips 127.0.0.1 192.168.1.101 192.168.102

#填写Nginx所在的内网IP,Nginx的内网地址必写,不然一样失败的,这问题花了几个小时测试;有几个代理服务器的IP就写几个代理服务器的IP

RPAFheader X-Forwarded-For

保存退出后重启apache,再看看 apache 的日志内容?