http_* 서버 설정

http_* 서버 설정

이 페이지에서는 HTTP 인터페이스의 경로 요청 라우팅, 커스텀 HTTP 핸들러, OPTIONS 응답 헤더, 기본 응답 페이지 등을 제어하는 http_* 계열 서버 설정을 설명할게요.

출처: 문서

본문

이 설정들은 ClickHouse 서버를 구성하며, ClickHouse 소스에서 자동으로 생성돼요.

http_allow_path_requests

HTTP 인터페이스가 경로 스타일 요청(예: /my_db/my_table.csv)을 쿼리 핸들러로 라우팅하도록 허용해요. 이 플래그는 라우팅 결정만 제어하며, 이 결정은 요청이 인증되기 전에 이루어지므로 사용자별 설정에 의존할 수 없어요. 라우팅 후에는 사용자별 설정인 http_allow_database_as_path, http_allow_table_as_file, http_allow_filters_as_path이 라우팅된 경로가 인증된 사용자에 대해 실제로 해석되는지 제어해요. 이 플래그가 꺼져 있으면 알 수 없는 경로는 일반 404를 반환해요.

예시

<http_allow_path_requests>1</http_allow_path_requests>

http_handlers

커스텀 HTTP 핸들러를 사용할 수 있게 해요. 새 http 핸들러를 추가하려면 새 <rule>을 추가하면 돼요. 규칙은 정의된 대로 위에서 아래로 확인되며, 첫 번째 일치 항목이 핸들러를 실행해요.

다음 설정은 하위 태그(sub-tags)로 구성할 수 있어요.

Sub-tags Definition
url 요청 URL을 매칭하려면 정규식 매칭을 위해 ‘regex:’ 접두사를 사용할 수 있어요 (선택)
methods 요청 메서드를 매칭하려면 여러 메서드 매칭을 쉼표로 구분할 수 있어요 (선택)
headers 요청 헤더를 매칭하려면 각 자식 요소를 매칭해요 (자식 요소 이름이 헤더 이름), 정규식 매칭을 위해 ‘regex:’ 접두사를 사용할 수 있어요 (선택)
handler 요청 핸들러예요
empty_query_string URL에 쿼리 문자열이 없는지 확인해요

handler는 다음 설정을 포함하며 하위 태그로 구성할 수 있어요.

Sub-tags Definition
url 리다이렉트할 위치예요
type 지원되는 유형: static, dynamic_query_handler, predefined_query_handler, redirect
status static 유형과 함께 사용, 응답 상태 코드예요
query_param_name dynamic_query_handler 유형과 함께 사용, HTTP 요청 매개변수에서 <query_param_name> 값에 해당하는 것을 추출하여 실행해요
query predefined_query_handler 유형과 함께 사용, 핸들러가 호출될 때 쿼리를 실행해요
content_type static 유형과 함께 사용, 응답 content-type이에요
response_content static 유형과 함께 사용, 클라이언트로 보내는 응답 내용이에요. ‘file://’ 또는 ‘config://’ 접두사를 사용하면 파일이나 구성에서 내용을 찾아 클라이언트로 보내요

규칙 목록과 함께 모든 기본 핸들러를 활성화하는 <defaults/>를 지정할 수 있어요.

예시:

<http_handlers>
    <rule>
        <url>/</url>
        <methods>POST,GET</methods>
        <headers><pragma>no-cache</pragma></headers>
        <handler>
            <type>dynamic_query_handler</type>
            <query_param_name>query</query_param_name>
        </handler>
    </rule>

    <rule>
        <url>/predefined_query</url>
        <methods>POST,GET</methods>
        <handler>
            <type>predefined_query_handler</type>
            <query>SELECT * FROM system.settings</query>
        </handler>
    </rule>

    <rule>
        <handler>
            <type>static</type>
            <status>200</status>
            <content_type>text/plain; charset=UTF-8</content_type>
            <response_content>config://http_server_default_response</response_content>
        </handler>
    </rule>
</http_handlers>

http_options_response

OPTIONS HTTP 요청의 응답에 헤더를 추가하는 데 사용돼요. OPTIONS 메서드는 CORS 사전 요청(preflight requests)을 할 때 사용돼요. 자세한 내용은 OPTIONS를 참고하세요.

예시:

<http_options_response>
     <header>
            <name>Access-Control-Allow-Origin</name>
            <value>*</value>
     </header>
     <header>
          <name>Access-Control-Allow-Headers</name>
          <value>origin, x-requested-with, x-clickhouse-format, x-clickhouse-user, x-clickhouse-key, Authorization</value>
     </header>
     <header>
          <name>Access-Control-Allow-Methods</name>
          <value>POST, GET, OPTIONS</value>
     </header>
     <header>
          <name>Access-Control-Max-Age</name>
          <value>86400</value>
     </header>
</http_options_response>

http_server_default_response

ClickHouse HTTP(s) 서버에 접근할 때 기본적으로 표시되는 페이지예요. 기본값은 "Ok."(끝에 줄바꿈 포함)예요.

  • 기본값: "Ok.\n"

예시 http://localhost: http_port에 접근하면 https://tabix.io/가 열려요.

<http_server_default_response>
  <![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]>
</http_server_default_response>

더 알아보기 (Learn more)