gitlab 을 구현한 시스템

메일 WEB 서버에서 Reserve Proxy Server를 통해서 자체 설치한 gitlab과 연결을 하고 있는 구조입니다.

flowchart BR
    A[apache web server] --Reserve Proxy--> B[gitlab server on-promise]

일반 apache 설정에서는 gitlab 에 요청을 하면 하위 URL에 제대로 요청을 할 수가 없습니다. 이를 해결하기 위해서 apache 에 reserve proxy 에 관한 설정을 해줘야 합니다.
저는 아래와 같이 80 port 로 들어온 요청을 443 으로 redirect 시켜서 서버 구성을 했습니다.

<VirtualHost *:80>
        ServerName      gitlab.domain.com
        Redirect        / https://gitlab.domain.com
</VirtualHost>
<VirtualHost *:443>
        ServerName      gitlab.domain.com

        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://192.168.0.67:8000/
        ProxyPassReverse / http://192.168.0.67:8000/

        <Proxy *>
                Order allow
                Allow from all
        </Proxy>
        ....
</VirtualHost>

여기서 추가를 해 줘야 하는 옵션은 두가지 입니다.

  1. nocanon: ProxyPass 디렉티브와 함께 사용합니다.
    프록시 서버가 요청 URL을 정규화 하지 않도록 지정합니다. 정규화는 URL 경로를 표준화하여 중복된 슬래시를 제거하고 상위 디렉토리 참조를 해결하는 과정입니다. 원래 요청 URL의 경로를 그대로 유지할 수 있습니다.

  2. AllowEncodedSlashes NoDecode: ProxyPass 디렉티브와 함께 사용합니다.
    프록시 서버가 인코딩된 슬래시를 디코딩 하지 않도록 지정합니다. 기본적으로 Apache 는 인코딩된 슬래시를 디코딩하여 처리합니다. 인코딩된 슬래시를 그대로 유지할 수 있습니다. 일부 어플리케이션에서 인코딩 된 슬래시를 사용하는 경우 유용합니다.

<VirtualHost *:443>
        ServerName      gitlab.domain.com

        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://192.168.0.67:8000/ nocanon
        ProxyPassReverse / http://192.168.0.67:8000/

        ....
        AllowEncodedSlashes NoDecode
</VirtualHost>
반응형

+ Recent posts