Tomcat의 HAProxy가 오류 403을 반환합니다.

Tomcat의 HAProxy가 오류 403을 반환합니다.

포트 8080에서 Tomcat 서비스를 실행하는 이전 서버가 있습니다. 다양한 이유로(클라이언트 액세스 보호 포함) SSL 인증서로 보호되는 HAProxy 서버를 앞에 설정해야 합니다.

HAProxy 관련 구성은 다음과 같습니다.

frontend myservice
    mode    tcp
    option  tcplog
    option  logasap
    log     global
    option  tcpka
    bind    10.10.10.10:80
    bind    10.10.10.10:443 ssl crt /etc/ssl/haproxy/myservice.example.org.pem
    acl secure dst_port eq 443
    http-response add-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"
    http-response replace-header Set-Cookie (.*) \1;\ Secure if secure
    use_backend bck_myservice if { hdr(Host) -i myservice.example.org myservice }
    default_backend bck_deny

backend bck_myservice
    mode     tcp
    balance  leastconn
    option   prefer-last-server
    server   oldserver.example.org oldserver.example.org:8080 weight 1 check port 8080 inter 2000 rise 2 fall 5 ssl verify none

backend bck_deny
    mode http
    http-request deny

10.10.10.10은 myservice.example.org에 매핑된 새 서비스의 VIP입니다.

입장http://oldserver.example.org:8080평소처럼 잘 작동합니다.

질문: https://myservice.example.org"403 금지됨" 오류가 발생했습니다. Tomcat 로그에 추적이 없기 때문에 이 URL에 액세스해도 Tomcat 백엔드에 도달하지 않는 것으로 보입니다. (참고: HAProxy 구성이 여기에 있었지만 mode http"503 서비스를 사용할 수 없음" 오류가 발생했습니다.)

답변1

SSL 인증서 확인을 비활성화하는 백엔드 옵션으로 인해 문제가 발생한 것으로 나타났습니다 ssl verify none.

수정된 작업 구성은 다음과 같습니다.

frontend myservice
    mode    tcp
    option  tcplog
    option  logasap
    log     global
    option  tcpka
    bind    10.10.10.10:80
    bind    10.10.10.10:443 ssl crt /etc/ssl/haproxy/myservice.example.org.pem
    acl secure dst_port eq 443
    http-response add-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;"
    http-response replace-header Set-Cookie (.*) \1;\ Secure if secure
    use_backend bck_myservice if { hdr(Host) -i myservice.example.org myservice }
    default_backend bck_deny

backend bck_myservice
    mode     tcp
    balance  leastconn
    option   prefer-last-server
    server   oldserver.example.org oldserver.example.org:8080 weight 1 check port 8080 inter 2000 rise 2 fall 5

backend bck_deny
    mode http
    http-request deny 

관련 정보