아파치를 프록시 서버로 사용하여 일부 요청을 다른 포트에서 실행중인 서비스로 리디렉션하려고합니다. 로아파치 mod_rewrite가 작동하지 않습니다.
sudo apt-get install apache2
sudo a2enmod rewrite
sudo a2enmod proxy
sudo a2enmod proxy_http
그런 다음 편집 /etc/apache2/httpd.conf을 : http://httpd.apache.org/docs/2.4/rewrite/proxy.html
내가 정확히 설치했던 (그리고 아무것도) : 나는 여기 지침에 따라 시도하고있어
을RewriteEngine on
RewriteRule ^/(.*) http://localhost:9200/$1 [P]
ProxyPassReverse/http://localhost:9200/
마지막으로, apache2 (sudo service apache2 restart
)가 다시 시작되었습니다. 결국, 나는 그 규칙에 몇 가지 실제 조건을 추가 할 것이지만, 나는 지금 그것을 테스트하려고하고있다.
하지만 작동하지 않습니다. curl -XGET localhost:80/foo
이 404 응답으로 실패하면 curl -XGET loaclhost:9200/foo
이 성공합니다. 오류 로그 또는 액세스 로그에 유용한 것은 없습니다.
고마워요. 내가 결국 RewriteRule을 사용하려고하는 이유는 내가 결국 다소 복잡한 RewriteCond를 원할 수도 있기 때문입니다. 단지 ProxyPass로 가능한 것보다 훨씬 낫습니다. –
@ JoeK 당신은 두 가지 문제를 혼합하고 있습니다. 내가 가지고있는 설정을 사용하는 서버 자체는'http : // localhost : 9200 /'에 대한 모든 트래픽을 프록시합니다. 'mod_rewrite'로 무엇을하는지는 완전히 다른 논리입니다. – JakeGould
이러한 설정을 사용하지만 특정 요청 방법 만 전달할 수있는 방법이 있습니까? 한 걸음 뒤로 물러나십시오 - 내가하고 싶은 것은 프록시 만 GET 요청이며 특정 경로에 대한 요청 만하고 다른 모든 것을 거부합니다. 이 같은 설정을 사용하여 추가 재 작성 규칙을 시도했지만 재 작성 전에 프록시가 발생하고있는 것 같았습니다. 예를 들어'RewriteRule. * - [F]'를 추가했지만 모든 요청은 여전히 성공적으로 처리되었습니다. –