2014-11-24 3 views
2

URL foo.com/bar을 통해 공개하고 싶은 웹 서비스가 있습니다. 그러나 Apache 리버스 프록시가 의도 한대로 작동하지 않습니다. 다음 코드가 포함 된 파일 001-default.conf, 만들었습니다역방향 프록시 : 원하지 않는 URL 변경

<VirtualHost *:80> 
    ProxyPreserveHost On 
    ProxyRequests Off 
    ProxyPass /bar http://foo.com:8080/bar 
    ProxyPassReverse /bar foo.com:8080/bar 

    DocumentRoot /var/www/foo/ 
    ServerName info.foo.com 
    <Directory /var/www/foo> 
      Options Indexes FollowSymLinks MultiViews Includes 
      AllowOverride All 
      Order allow,deny 
      allow from all 
    </Directory> 
</VirtualHost> 

오른쪽 지금은 404 오류 코드가 나타날합니다.

foo.com/bar의 모든 조회를 자동으로 foo.com:8080/bar으로 리디렉션하려고합니다. 즉, 사용자는 foo.com/bar 만 볼 수 있습니다. 역방향 프록시 리디렉션에는 foo.com/bar?=foobar과 같은 요청도 포함되어야합니다.

% sudo a2enmod proxy_http   
    Considering dependency proxy for proxy_http: 
    Module proxy already enabled 
    Module proxy_http already enabled 

나는이 나를 도울 수 있습니다 거기에 누군가가 있기를 바랍니다 :

나는 proxy_http 및 프록시를 사용했다.

내 문제가 해결되지 않은

유사 문제 : apache reverse proxy changes urlTransparent redirect to port 8080

+0

처음에는 '리디렉션 영구/바 http : // foo : 8080/bar'을 제거하십시오. 리디렉션하지 않고 프록시하려고합니다. 기존의'ProxyPass' 지시자는 그렇게해야합니다. – arco444

+0

www.foo.com/bar를 입력 할 때 404가 표시됩니다. 이 변경 사항을 반영하도록 질문을 업데이트했습니다. –

+0

귀하의 서버 이름은 info.foo.com입니다. 즉, foo.com은 다른 VHOST를 공격 할 수 있습니다. – CodeTower

답변

2

시도를하고로 설정을 편집

<VirtualHost *:80> 
    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 
    ProxyPreserveHost On 
    ProxyRequests Off 
    ProxyPass /bar http://foo.com:8080 # Note removed /bar 
    ProxyPassReverse /bar foo.com:8080 # Note removed /bar 

    DocumentRoot /var/www/foo/ 
    ServerName info.foo.com 
    <Directory /var/www/foo> 
      Options Indexes FollowSymLinks MultiViews Includes 
      AllowOverride All 
      Order allow,deny 
      allow from all 
    </Directory> 
</VirtualHost> 

당신은 또한 당신이 수도 테/바/바 문제를 방지하기 위해 mod_alias가 함께 시도 할 수 있습니다 지금 직면하고있어. 나는 그것에 대해 잘 모른다 , 설명서를 참조하십시오 : http://httpd.apache.org/docs/2.2/mod/mod_alias.html

이 프록시를 제거 wan't 수 사용하여 conf의

Alias /bar http://foo.com:8080 

이 추가 같은 것을보십시오.

+0

이렇게하면 URL이 http://foo.com/bar로 표시되는 http://foo.com:8080으로 리디렉션됩니다. 실제로 진행되지만 http://foo.com:8080/sparql로 리디렉션해야합니다. . 내가 모을 수있는 요금만큼 포트가 관련되어있을 때 앨리어스는 작동하지 않습니다. :에스 –