阿里云SLB显示用户真实IP

接了个客户,要架一个网站,全套阿里云,RDS之类我还是挺熟的,毕竟我也在用,不过SLB就比较蛋疼了,之前我用过腾讯云的SLB,不过是拿来搞DNS服务器负载均衡的,直接用的TCP,现在要搞网站那就得用HTTP(S)了,那么问题来了,SLB和CDN都会有的问题,如何处理访客的真实IP ?

其实解决方法挺简单的,配合Nginx的Realip模块就行,主要是配置问题,我之前折腾CDN的时候就搞过,不过来源IP各家都有所不同,所以这边记录下吧,辣鸡阿里云自己的文档里都不写,简直智障。

①首先确保你的Nginx安装了realip模块,nginx -V然后看看有没有http_realip_module就行,没有的话需要重新编译安装,在./configure后面添加--with-http_realip_module 然后一顿操作就行

②修改nginx.conf配置文件,在http区块部分添加如下内容(如果你还是不知道是哪部分,那就找一堆fastcgi那边,在最后一行fastcgi下面添加)

然后重启下nginx就行,这个对lnmpa也行,在nginx里面会显示真实ip,在apache那儿会显示127.0.0.1+真实ip

直接使用apache处理的情况下需要安装mod_rpaf这个模块,我就不多提了,网上搜下就有

记一个Pcap_DNSProxy的BUG

一.问题

     最近在折腾anyconnect,拿来玩战地1,主要还是因为某sock在我这蜜汁校园网下太不稳定了,而常规的vpn又被ban协议了(好像我把系统玩坏了,我才不会承认呢!),然后要处理dns的问题,因为要做no-route分流必须考虑到cdn的问题,不然就没意义了,所以就把前一段时间折腾的Pcap_dnsproxy拿出来了,简单的配置了一下让它监听内网tunnel,然后改了下ocserv的配置文件将dns也设置为内网tunnel的ip,然后就好了,不过我在玩了一段时间后总是发现Pcap_dnsproxy会dead,主要状况是进程还在,但是对任何查询都无响应,即使是在服务器上dig也是如此,这就很尴尬了。

二.分析

      碰到问题去翻log是个好习惯,而且配合谷歌食用风味更佳(雾),然而这次翻到的log却没有给我直接找到解决方法,log里除了标示着程序启动读取config的输出以外就只有一条错误了(因为这条错误刷屏了……)

错误:Network Error: Socket initialization error, error code is 97

啥也看不出是吧,通过谷歌搜索这句话,可以看到github上一个Pcap_dnsproxy的issue里有出现,开始很惊喜,然而看了下发现并没有解决,只是一提,不过也给了一部分信息,项目的作者说97是协议不支持,程序无法初始化监听,那么问题就来了,是啥协议啥监听不成功?

把程序的配置文件从头翻到尾,只有TCP/UDP/IPV4/IPV6这几个是可以作为监听配置的,然后进一步分析,TCP和UDP是肯定不会有问题的(有问题这台机器还能跑啥),那么就是IPV6的锅了,很简单,因为我用的是阿里云的机器,不支持IPV6,好了,那我把所有IPV6的监听全部干掉,在对配置文件一番修改之后,啥也没变,还是这样(大写的尴尬)……

这到底是为什么呢? 阅读全文→