本篇文章给大家分享的是有关利用Nginx反向代理怎么获取真实IP、小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>一、前言强>
前文Nginx解决WebApi跨域二次请求以及Vue单页面问题当中虽然解决了跨域问题带来的二次请求,但也产生了一个新的问题,就是如果需要获取用户IP的时候,获取的IP地址总是本机地址。
<强>二,原因强>
由于Nginx反向代理后,在应用中取得的IP都是反向代理服务器的IP,取得的域名也是反向代理配置的Url的域名。
<强>三,解决方案强>
解决该问题,需要在Nginx反向代理配置中添加一些配置信息,目的将客户端的真实IP和域名传递到应用程序中,同时,也要修改获取IP地址的方法。
但是需要注意的是,通过Nginx反向代理后,如果访问IP通过了几层代理,可能取得的IP地址是这种格式:clientIP, proxy1 proxy2。
如果需要将IP地址插入到数据库的话,需要做防止注入。因此要对上述的IP地址的格式进行截取。
<强> 3.1 Nginx配置如下强>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17日
18
19日
20
21日
22日
23日
24
<代码>服务器{代码>
, <代码>,代码> <代码> listen 9461;#监听端口号代码>
, <代码>,代码> <代码> server_name localhost 192.168.88.22;#访问地址代码>
, <代码>,代码> <代码>位置/{代码>
<代码>,,,代码> <代码>根项目路径;#例如:E:/发布/xxx/; 代码>
<代码>,,,代码> <代码>指数index . html; 代码>
<代码>,,,代码>
<代码>,,,代码> <代码> #此处用于处理Vue,角,使反应用H5的历史时重写的问题代码>
<代码>,,,代码> <代码>如果!- e request_filename美元){代码>
<代码>,,,,代码> <代码>重写^(. *)/索引。html最后;代码>
<代码>,,,,代码> <代码>打破;代码>
<代码>,,,代码> <代码>}代码>
, <代码>,代码> <代码>}代码>
, <代码>,代码>
, <代码>,代码> <代码> #代理服务端接口代码>
, <代码>,代码> <代码>位置/api{代码>
<代码>,,,代码> <代码> proxy_pass http://localhost: 9460/api; #代理接口地址代码>
<代码>,,,代码> <代码> #主机配置以及域名传递代码>
<代码>,,,代码> <代码> proxy_set_header主机主机美元;代码>
<代码>,,,代码> <代码> proxy_set_header X-Real-IP remote_addr美元;代码>
<代码>,,,代码> <代码> proxy_set_header远程主机remote_addr美元;代码>
<代码>,,,代码> <代码> proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元;代码>
, <代码>,代码> <代码>}代码>
<代码>,代码> <代码>}代码>
<强> c# 3.2代码获取真实IP方法强>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17日
18
19日
20
21日
22日
23日
24
25
26日
27日
28日
29日
30
31日
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61年
62年
63年
64年
65年
66年
67年
68年
69年
70年
71年
72年
73年