서버에서 GET/POST HTTP 요청을 리디렉션하는 솔루션을 찾고 있습니다.
가장 쉬운 부분은 포트 변환 및 호스트 이름 리디렉션(HTTP 3xx 리디렉션)입니다. DMZ에 있는 서버가 포트 7070에서 트래픽을 수신할 때(http://mydmz.server.com:7070), 이는 트래픽을 공개 웹 서버(http://liveupdate.symantecliveupdate.com기본 포트는 80)
그러나 요청 헤더를 동적으로 수정해야 합니다.
- /clu-제품URI에서 제거해야 함
- 호스트: mydmz.server.com로 교체해야합니다호스트: liveupdate.symantecliveupdate.com
포트 7070에서 수신 대기하고 다음을 수행하기 위해 내 서버에서 어떤 도구와 솔루션을 사용할 수 있습니까? 로드 밸런서, HTTP 프록시?
답변1
나는 이것을 달성하기 위해 HAProxy를 사용할 수 있다고 생각합니다.
- 포트 7070/tcp에서 수신 대기하려면 httpd 모드로 설정하십시오.
haproxy 대체 값을 사용하여 호스트 헤더를 수정합니다. 귀하의 경우 다음과 같이 보일 수 있습니다.
http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\1
haproxy URL 재작성을 사용하여 URI를 제거합니다. 귀하의 경우에는 다음과 같을 수 있습니다.
reqrep ^([^\ ]*\ /)clu-prod[/]?(.*) \1\2
이러한 설정을 사용하면 HAProxy 구성은 다음과 같을 수 있습니다. 이는 CentOS 7의 HAProxy 기본 구성을 빠르게 수정한 것입니다.아니요철저한 테스트를 거쳤습니다):
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend main *:7070
default_backend app
backend app
http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\2
reqrep ^(.*)/clu-prod(.*) \1/\2
balance roundrobin
server app1 liveupdate.symantecliveupdate.com:80 check
사용할 수 있는 다른 옵션은 오징어 프록시입니다.http://www.squid-cache.org/