java中不同的工程,本地怎么测试

Python013

java中不同的工程,本地怎么测试,第1张

java中不同的工程,本地项目问题测试流程:这里用Charles做前端(包括手机和浏览器)的网络代理,同时将web proxy设置为127.0.0.1,将端口号改为tomcat服务的端口号,默认是80;用nginx做反向代理;同时要修改主机的hos,将网站的域名映射到主机本身即将域名与127.0.0.1对应。

如果是在手机上测试,首先将手机网络代理设置为本地后台程序所在主机的IP,端口号修改为charles的端口号,默认是8888。这时启动服务后就可以用手机调到本地程序的接口了。通过在charles上查看接口的url,在程序中找到相应的接口,然后就能进行相应问题的修改了。

首先,在前端nginx上需要做如下配置:

location /

proxy_set_hearder host$host

proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for

proxy_set_header X-real-ip $remote_addr

}

nginx会在把请求转向后台real-server前把http报头中的ip地址进行替换;这样操作完成后,real-server也需要做一些操作;

public class ClientIPUtils {

/**

* 在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地

* 址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等

* 反向代理软件就不能获取到客户端的真实IP地址了。

* 但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

* @param request

* @return

*/

public static String getClientIp(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for")

  //String ip = request.getHeader("X-real-ip")

logger.debug("x-forwarded-for = {}", ip)

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP")

logger.debug("Proxy-Client-IP = {}", ip)

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP")

logger.debug("WL-Proxy-Client-IP = {}", ip)

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr()

logger.debug("RemoteAddr-IP = {}", ip)

}

if(StringUtils.isNotBlank(ip)) {

ip = ip.split(",")[0]

}

return ip

}

}