提交 7a4973bd 编写于 作者: Z zhourui

修改代理到本地127,0,0,1

上级 e3c2d0b3
......@@ -3,11 +3,14 @@ package com.x.server.console.server.web;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.proxy.AsyncProxyServlet;
public class Proxy extends AsyncProxyServlet {
private static final long serialVersionUID = 2737360000716631564L;
private static final String X_Real_IP = "X-Real-IP";
@Override
protected String rewriteTarget(HttpServletRequest request) {
......@@ -17,19 +20,30 @@ public class Proxy extends AsyncProxyServlet {
}
private String target(String url, String parameter, String port) {
int x = StringUtils.indexOf(url, ":", 8);
int x = StringUtils.indexOf(url, "://");
int y = StringUtils.indexOf(url, "/", 8);
if ((x > 0) && (y > 0)) {
return url.substring(0, x) + port(url, port) + url.substring(y)
+ (StringUtils.isBlank(parameter) ? "" : "?" + parameter);
} else if (y > 0) {
return url.substring(0, y) + port(url, port) + url.substring(y)
return url.substring(0, x + 3) + "127.0.0.1" + port(url, port) + url.substring(y)
+ (StringUtils.isBlank(parameter) ? "" : "?" + parameter);
} else {
return null;
}
}
// private String target(String url, String parameter, String port) {
// int x = StringUtils.indexOf(url, ":", 8);
// int y = StringUtils.indexOf(url, "/", 8);
// if ((x > 0) && (y > 0)) {
// return url.substring(0, x) + port(url, port) + url.substring(y)
// + (StringUtils.isBlank(parameter) ? "" : "?" + parameter);
// } else if (y > 0) {
// return url.substring(0, y) + port(url, port) + url.substring(y)
// + (StringUtils.isBlank(parameter) ? "" : "?" + parameter);
// } else {
// return null;
// }
// }
private String port(String url, String port) {
if (StringUtils.startsWithIgnoreCase(url, "https://") || StringUtils.startsWithIgnoreCase(url, "wss://")) {
if (StringUtils.equals(port, "443")) {
......@@ -43,4 +57,66 @@ public class Proxy extends AsyncProxyServlet {
return ":" + port;
}
@Override
protected void addXForwardedHeaders(HttpServletRequest clientRequest, Request proxyRequest) {
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.X_FORWARDED_FOR.asString()))) {
proxyRequest.header(HttpHeader.X_FORWARDED_FOR,
clientRequest.getHeader(HttpHeader.X_FORWARDED_FOR.asString()));
} else {
proxyRequest.header(HttpHeader.X_FORWARDED_FOR, clientRequest.getRemoteAddr());
}
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.X_FORWARDED_PROTO.asString()))) {
proxyRequest.header(HttpHeader.X_FORWARDED_PROTO,
clientRequest.getHeader(HttpHeader.X_FORWARDED_PROTO.asString()));
} else {
proxyRequest.header(HttpHeader.X_FORWARDED_PROTO, clientRequest.getScheme());
}
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.X_FORWARDED_HOST.asString()))) {
proxyRequest.header(HttpHeader.X_FORWARDED_HOST,
clientRequest.getHeader(HttpHeader.X_FORWARDED_HOST.asString()));
} else {
proxyRequest.header(HttpHeader.X_FORWARDED_HOST, clientRequest.getHeader(HttpHeader.HOST.asString()));
}
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.X_FORWARDED_SERVER.asString()))) {
proxyRequest.header(HttpHeader.X_FORWARDED_SERVER,
clientRequest.getHeader(HttpHeader.X_FORWARDED_SERVER.asString()));
} else {
proxyRequest.header(HttpHeader.X_FORWARDED_SERVER, clientRequest.getLocalName());
}
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.HOST.asString()))) {
proxyRequest.header(HttpHeader.HOST, clientRequest.getHeader(HttpHeader.HOST.asString()));
}
if (StringUtils.isNotEmpty(clientRequest.getHeader(X_Real_IP))) {
proxyRequest.header(X_Real_IP, clientRequest.getHeader(X_Real_IP));
} else {
proxyRequest.header(X_Real_IP, clientRequest.getRemoteAddr());
}
// if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.UPGRADE.asString()))) {
// proxyRequest.header(HttpHeader.UPGRADE, clientRequest.getHeader(HttpHeader.UPGRADE.asString()));
// }
//
// if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.CONNECTION.asString()))) {
// proxyRequest.header(HttpHeader.CONNECTION, clientRequest.getHeader(HttpHeader.CONNECTION.asString()));
// }
//
// if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_EXTENSIONS.asString()))) {
// proxyRequest.header(HttpHeader.SEC_WEBSOCKET_EXTENSIONS,
// clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_EXTENSIONS.asString()));
// }
//
// if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_KEY.asString()))) {
// proxyRequest.header(HttpHeader.SEC_WEBSOCKET_KEY,
// clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_KEY.asString()));
// }
if (StringUtils.isNotEmpty(clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_VERSION.asString()))) {
proxyRequest.header(HttpHeader.SEC_WEBSOCKET_VERSION,
clientRequest.getHeader(HttpHeader.SEC_WEBSOCKET_VERSION.asString()));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册