前言
今天分享几个小知识点和工具类~
使用nginx代理后,获取用户真实ip
在nginx配置文件中添加
server {
listen 80;
server_name _;
location / {
..................
proxy_pass http://127.0.0.1:8000/;
# $host 变量,Host 为变量名 都是内置的$
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
获取IP和微信支付签名算法
package com.weixin.util;
import java.util.Arrays;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.weixin.config.WeChatPatConfig;
public class CommonsUtil {
/**
* 获取IP
*/
public static String getRemoteIP(HttpServletRequest request) {
if(request.getHeader("x-forwarded-for") == null){
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
/**
* 微信支付签名算法
*/
public static String getSign(Map<String,Object> map) {
StringBuffer sb = new StringBuffer();
String[] keyArr = (String[])map.keySet().toArray(new String[map.size()]);
Arrays.sort(keyArr);
for(int i = 0,size=keyArr.length;i < size ;++i) {
if("sign".equals(keyArr[i])) {
continue;
}
sb.append(keyArr[i]+"="+map.get(keyArr[i])+"&");
}
sb.append("key="+WeChatPatConfig.key);//这个key是在商户密匙中设置过的 拼接到这里 用来生成sign签名
String sign = Md5Util.MD5(sb.toString());
return sign;
}
}