2012-10-23 2 views
2

부두가 제공하는 투명한 프록시를 사용하려고합니다. 부두 투명한 프록시는 항상 403을 반환합니다.

내 web.xml을

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_9" 
    version="2.4" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Archetype Created Web Application</display-name> 

<servlet> 
    <servlet-name>googleProxy</servlet-name> 
    <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class> 
    <init-param> 
     <param-name>ProxyTo</param-name> 
     <param-value>http://www.google.com</param-value> 
    </init-param> 
    <init-param> 
     <param-name>Prefix</param-name> 
     <param-value>/google</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>googleProxy</servlet-name> 
    <url-pattern>/google/*</url-pattern> 
</servlet-mapping> 

이며, 이는 (내가 받는다는을 사용하고 있습니다) pom.xml 파일입니다 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>JettyProxySample</groupId> 
<artifactId>JettyProxySample</artifactId> 
<packaging>war</packaging> 
<version>1.0</version> 
<name>JettyProxySample Maven Webapp</name> 
<url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-servlets</artifactId> 
     <version>7.0.0.M4</version> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>JettyProxySample</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>maven-jetty-plugin</artifactId> 
      <version>6.1.10</version> 
      <configuration> 
       <scanIntervalSeconds>10</scanIntervalSeconds> 
       <stopKey>foo</stopKey> 
       <stopPort>9999</stopPort> 
      </configuration> 
      <executions> 
       <execution> 
        <id>start-jetty</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <scanIntervalSeconds>0</scanIntervalSeconds> 
         <daemon>true</daemon> 
        </configuration> 
       </execution> 
       <execution> 
        <id>stop-jetty</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>stop</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

내가 프록시를 기대 다음과 같이 요청을 전달하십시오 :

http://localhost:8080/JettyProxySample/google/search?q=hello 
이에

:

http://www.google.com/search?q=hello 

하지만 브라우저에서 해당 URL을하려고 할 때, 나는 항상이 얻을 :

HTTP ERROR: 403 

FORBIDDEN 
RequestURI=/JettyProxySample/google/search 

Powered by Jetty:// 

어떤 생각을?

+0

구글 ... 포함되어 있습니다. IP 주소는 무엇입니까? –

+0

@Roman C 나는 그것을 사용하는 방법을 알아 내려고하고 있습니다. 그리고 죄송합니다. "IP 주소 란 무엇입니까?"라는 의미는 무엇입니까? – CuiPengFei

+0

이 문제에 대해서는 docu를 읽어야합니다. –

답변

2

여기에 답변을 올리려면 몇 년 전에 마일스톤을 사용하지 마십시오. 나는 성공적 출신 그냥 뭔가를 두 버전에서 프록시 서블릿을 사용하여 사람들을 많이 알고

jetty8에 대한 jetty7

  • 8.1.7.v20120910에 대한

    • 7.6.7.v20120910 codehaus에서 일식으로의 최초 마이그레이션 ... 심각한 코드 분량이 있었기 때문에 코드가 제대로 작동하지 않는다면 놀라지 않을 것입니다.

  • 0

    소스 코드 읽기가 도움이됩니다. :)

    서버의 루트에 프록시 서블릿이 설정되어 있지 않지만 응용 프로그램 내부에 프리픽스 매개 변수가 있으므로 은 전체 접두사 context-name을 포함해야합니다. 웹 응용 프로그램은 투명한 프록시를 사용하는 이유는 무엇입니까

    접두사/YOUR_WEB_APP_CONTEXT가/

    see also

    관련 문제