1、java代码
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
|
/** 获取客户端IP */
public static final String getClientIp(HttpServletRequest request) {
String ip = request.getHeader( "X-Forwarded-For" );
if (StringUtils.isBlank(ip) || "unknown" .equalsIgnoreCase(ip)|| "127.0.0.1" .equalsIgnoreCase(ip)) {
ip = request.getHeader( "Proxy-Client-IP" );
}
if (StringUtils.isBlank(ip) || "unknown" .equalsIgnoreCase(ip)|| "127.0.0.1" .equalsIgnoreCase(ip)) {
ip = request.getHeader( "WL-Proxy-Client-IP" );
}
if (StringUtils.isBlank(ip) || "unknown" .equalsIgnoreCase(ip)|| "127.0.0.1" .equalsIgnoreCase(ip)) {
ip = request.getHeader( "X-Real-IP" );
}
if (StringUtils.isBlank(ip) || "unknown" .equalsIgnoreCase(ip)|| "127.0.0.1" .equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (StringUtils.isBlank(ip) || "127.0.0.1" .equals(ip)|| ip.indexOf( ":" ) > - 1 ) {
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
ip = null ;
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ip != null && ip.length() > 15 ) {
if (ip.indexOf( "," ) > 0 ) {
ip = ip.substring( 0 , ip.indexOf( "," ));
}
}
return ip;
}
|
2、nginx需要进行相应修改,重点 proxy_set_header
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
|
server {
listen xxxx;
server_name 127.0.0.1;
# 静态页面目录
root xxxxxxxxxx;
# 默认首页
index login.html;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST' ;
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' ;
#proxy_cookie_path /* /*;
client_max_body_size 100m;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade" ;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' ;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
......
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/xiufengd/p/13625361.html