2017-05-04 8 views
2

일부 사용자 요청의 유효성을 검사해야하므로 LittleProxy를 사용하려고합니다. 아이디어는 사용자에게 투명하게 만드는 것입니다 (iptables> littleproxy> origin server). 내가 LittleProxy에 흐름을 (즉, 127.0.0.1:3127에서 수신)로 다음과 리디렉션의 iptables을 사용하고 그래서Littleproxy 무한 루프

:

iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:3127 

나는 그것이 withTransparent(true)을 사용하기 시작하면, 나는 오류가 발생 (400) URI에 대한 잘못된 요청. 이것은 RFC 7230 규정 준수로 인해 발생합니다.

@Override 
public HttpResponse clientToProxyRequest(HttpObject httpObject) { 
    if (httpObject instanceof DefaultHttpRequest) { 
     final DefaultHttpRequest request = (DefaultHttpRequest) httpObject; 
     final String host = request.headers().get(HttpHeaders.Names.HOST); 
     request.setUri("http://" + host + request.getUri()); 
    } 
    return null; 
} 

을하지만 URI를 변경하는 끝없는 원인이 다음과 같이

final HttpProxyServer server = DefaultHttpProxyServer.bootstrap() 
    .withPort(3127).withTransparent(false) 
    .withFiltersSource(new HttpFiltersSourceAdapterExt()).start(); 

그리고 메소드를 오버라이드 :

final HttpProxyServer server = DefaultHttpProxyServer.bootstrap() 
    .withPort(3127).withTransparent(true).start(); 

은 그래서 요청 URI를 다음과 같이 시작, 변경하려 LittleProxy로 루프. 매번 새로운 을 통해 헤더를 추가하십시오.

또한 .withAllowRequestToOriginServer(true)을 사용하려고 시도했지만 .withTransparent(true)도 무한 루프가 발생합니다.

유학 DirectRequestTest.java 나는 헤더를 테스트하고 이미 "비아"가 있는지 확인했지만 요청을 중단하고 싶지 않습니다. LittleProxy가 원 서버를 호출하여 사용자에게 응답을 검색하고 제공하기를 원합니다.

제 질문은, 어떻게 LittleProxy로이 시나리오를 구현합니까?

+0

당신은 아직 Bob이라고 생각하지 않습니까? –

+0

귀하의 질문은이 문제와 유사하다고 생각합니다 : https://github.com/adamfisk/LittleProxy/issues/146 –

+0

어디서이 문제를 해결할 수 있습니까? –

답변

0

iptables 규칙 때문에 생각합니다. Littleproxy는 포트 80을 목표로하는 또 다른 요청을합니다. 규칙은 그것을 받아 들여 다시 작은 프로페셔널을 감지합니다. 아마 다른 컴퓨터에 설치해야합니다.