ReWriteRule을 사용한 프록시 시간 초과

Nov 16 2020

Apache 2.4에서 ReWriteRule (mod_rewrite)을 사용하여 프록시 할 때 시간 초과를 제어 할 수있는 방법이 없습니다.

<VirtualHost "*:443">
  ServerName xxxx
  Use ssl
  RewriteEngine On
  RewriteRule (.*/wms|/openlayers3/.*) http://localhost:8080$1 [P,L]
  RewriteRule .* [F]
</VirtualHost>

실패했습니다.

  • Timeout 400
  • ProxyTimeout 400
  • ProxySet
<Proxy "http://localhost:8080/">
  ProxySet connectiontimeout=100 timeout=400
</Proxy>
  • ProxyPass "/" "http://localhost:8080" connectiontimeout=100 timeout=400

시간 제한은 내가 사용하는 위의 지시문 중 어느 것을 사용하든 항상 1 분입니다.

답변

4 ximaera Nov 19 2020 at 12:52

이 시간 제한은 전역 적으로 만 제어 할 수 있습니다 . 전역 Timeout설정을 httpd.conf원하는 값으로 변경합니다 .

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 400

아마도이 작업을 수행하는 더 좋은 방법은 nginx를 사용하는 것입니다.

server {
    listen       443;
    server_name  xxxx;
    # ... ssl setup ...

    location ~* /wms$ {
        proxy_pass http://localhost:8080;
        proxy_read_timeout 400;
    }

    location /openlayers3/ {
        proxy_pass http://localhost:8080;
        proxy_read_timeout 400;
    }

    location / {
        return 403;
    }
}

이 스 니펫에서 무슨 일이 일어나고 있는지 이해할 수 있도록 nginx 문서에 대한 추가 링크 :

  • location nginx에서 정규식이 작동하는 방식
  • proxy_pass
  • proxy_read_timeout
  • 재 작성 규칙 을 Apache에서 Nginx로 변환

내 스 니펫에 누락 된 SSL 구성에 대해서는 설명서 도 읽어보십시오 .