Я пытаюсь использовать HAproxy для перенаправления устаревших запросов ASP на наш сервер ASP следующим образом:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4096
user haproxy
group haproxy
daemon
nbproc 2
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 4096
frontend main 0.0.0.0:80
acl url_legacy path_beg -i /wsMMC
acl url_legacy path_end -i .asmx
acl url_static path_beg -i /public
acl url_static path_end -i .jpg .jpeg .png .gif .ico .css .zip .tgz .gz .rar .bz2 .pdf .txt .tar .wav .bmp .rtf .flv .swf .html .htm .apk .jad
use_backend static if url_static
use_backend legacy if url_legacy
default_backend www
backend www
balance roundrobin
server app1 10.100.46.3:3001 check
server app2 10.100.46.4:3001 check
backend static
balance roundrobin
server app1 10.100.46.3:80 check
server app2 10.100.46.4:80 check
backend legacy
server legacy www.legacy.com:80 check
Однако я получаю ответ сервера 404 - ресурс не найден. Переход непосредственно на www.legacy.com/ws/derp.asmx возвращает правильный код исключения (поскольку я использую GET, а не POST). Какие-либо предложения?
Я попытался заменить путь, начинающийся с / images, а конец пути на .png, и я могу без проблем получить наш файл логотипа.
Удаленный сервер (legacy.com) - это компьютер IIS7 под управлением Windows.
Сервер IIS должен быть привязан к тому же домену, что и домен, используемый прокси. В моем примере HAproxy привязан к test.domain.com, в то время как IIS прослушивает только domain.com. После добавления test.domain.com в список имен IIS должен принять пересылку, и она заработала.