nginx配置
location / {
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-real-ip并不是真实的用户IP,而是Nginx代理服务器的IP,原因就是经过多级代理,$remote_addr是上一级的IP。
名词解释
$remote_addr
获取到上一级代理的IP
proxy_add_x_forwarded_for
获取到结果例如:(223.104.6.125, 10.10.10.45),第一个是用户的真实IP,第二个是一级代理的IP,依此类
通过上面的分析我们可以从proxy_add_x_forwarded_for中获取到用户的真实IP,使用正则匹配获取第一个即可,如下:
location / {
proxy_set_header Host $host
set $Real $proxy_add_x_forwarded_for
if( $Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+),(.*) ){
set$Real $1.$2.$3.$4
}
proxy_set_header X-real-ip $Real
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
}
也可以通过后台的程序,从请求的header里获取X-Forwarded-For,然后取起一个值即可
文章来自: https://www.cnblogs.com/jin-zhe/p/11989012.html
默认的情况下,nginx是监听所有能到这个服务器的端口的“listen 80”,即是说,网络能连接到的话,nginx能就能访问。建议:
1、检查一下主机的防火墙或策略,是否把80端口禁用了。
2、如果客户端和服务器不在同一个网段,需要在路由器设置映射或者路由功能。
3、检查设置nginx.conf里面,有没有deny相关的设置。
4、在服务端本地打开127.0.0.1,看看能不能访问,确定nginx正常启动。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)