백엔드를 칠 때 나는 404를 찾을 수 없습니다 얻을. 나는 URL에 virutal 경로를 가지고 haproxy를 사용합니다.
현재 구성으로
, /service/test.txt
는 ACL has_service
를 실행하고 URL을 변경하지 않고, 백엔드에 /service/test.txt
를 보내드립니다. 당신이 (백엔드에 /
에 프론트 엔드에서 프록시 /service
) URL을 변경하려면
, 당신은 당신의 백엔드에 다음 줄을 추가해야합니다 :
reqrep ^([^\ ]*)\ /service(.*) \1\ \2
이것은 프록시 요청에서 /service
을 제거합니다.
편집 :
HAProxy는 HTML 출력을 다시 작성하지 않습니다 당신의 자산을 선도 /service/
을받지 않습니다 제대로 제공되지 않습니다.
요청을 프록시 할 때 같은 경로를 유지하는 것이 더 쉽습니다 (예 : /
~ /
또는 /myapp/
~ /myapp/
). 프록시 /a
을 /b/c
으로 프록시하면 프록시 자체가 응답을 다시 작성해야합니다. <img src="https://stackoverflow.com/a/test.png">
을 <img src="/b/c/test.png">
으로 변경해야합니다. 또는 worse, <img src="../c/test.png" />
. html, js 및 css에 상대 참조를 추가하십시오. 나는 그것이 HAProxy와 함께 할 수 있는지 확신하지 못합니다.
응용 프로그램을 변경하여 /service/
에 배포 할 수있는 경우 많은을 피할 수 있습니다. 다른 가상 호스트 (예 : service.yourdomain.com
)를 사용하면이 문제도 해결할 수 있습니다. 그렇지 않으면
, 나는 내가 아파치 2.4 mod_proxy_html 으로 (그러나 /service/
에 응용 프로그램을 배포하기 위해 정말 열심히 노력하기 전에)를 시도 할 것, HAProxy 여기에 적합한 도구입니다 확실하지 않다.
'http : //192.168.2.1 : 9000/service'를 직접 호출하면 문제가 발생합니까? 그렇다면 백엔드가 요청을 올바르게 처리하지 못합니다. –
백엔드 자체에는/service가 없습니다. 나는 URL에 virutal 경로를 가지고 haproxy를 사용합니다. – Umapathy
감사합니다. reqrep^([^ \] * \ /)service[/]?(.*) \ 1 \ 2 – Umapathy