리눅스에서 nginx를 proxy로 사용하여 인증하는 방식.

(리눅스에 nginx와 mercurial이 이미 설치되어 있다고 가정함)

(/path/to/repo1 과 /path/to/repo2 는 hg init 를 통해 이미 저장소 생성이 되어 있는 상태라고 가정함)

 

 

포트번호

nginx : 8888

mercurial : 9999

 

 

nginx 설정

proxy를 이용할 virtual host 설정을 하나 만든다.

아래 예제는 http://localhost:8888 을 접속하면 mercurial로 proxy 하는 예제다.

 

server {

    listen 8888;

    server_name localhost;

 

    access_log /path/to/access_log;

    error_log /path/to/error_log;

 

    location / {

        auth_basic "Mercurial Restricted";

        auth_basic_user_file /path/to/file;

        proxy_pass http://localhost:9999;

    } 

}

 

 

인증파일 만들기

/path/to 로 이동하여 아래 명령어를 입력하여 인증파일을 생성한다. (비번은 알아서 적당히)

htpasswd -c FILENAME USERNAME

 

ex) /path/to 경로에 passwd 라는 파일을 만들고 user1이란 사용자 추가

htpasswd -c /path/to/passwd user1

 

 

 

Mercurial 설정

원활한 사용을 위해 아래의 내용중 [web] 탭의 내용은 webconf 파일에 반드시 들어 있어야 한다.

[paths] 는 serve 하고자 하는 저장소들을 나열해주면 된다.

 

[web]

push_ssl = false

allow_push = *

 

[paths]

repo1 = /path/to/repo1

repo2 = /path/to/repo2

 

 

 

실행

1. nginx 실행

  - nginx 는 conf 파일에 다 해놨으므로 그냥 실행만 하면 됨.

2. mercurial 실행

  - 실행커맨드는 아래와 같다. 나머지 옵션은 알아서.

hg serve --port 9999 --web-conf /path/to/webconf -d

 

 

 

확인

브라우저를 열어서 http://DOMAIN_NAME:9999/repo1 또는 repo2 로 접속해보면 사용자 인증 확인창이 나온다.

htpasswd 명령어를 이용하여 만든 username, password 를 넣어서 인증이 통과되면 Mercurial의 웹화면을 볼 수 있다.

 

windows 클라이언트 PC에서 TortoiseHg 를 이용하여 해당 저장소로부터 clone 해본다.

source 경로를 http://DOMAIN_NAME/repo1 로 하면 repo1 저장소의 내용을 clone 해올 수 있다.

이때 username과 password를 묻는 창이 뜨는데 제대로 입력하면 별일 없이 가져옴.

 

여기서 조낸 중요한 문제가 하나 있는데,

현재 상태로는 뭔 일만 하면 인증을 해야하는 굉장히 번거로운 문제가 생긴다.

이는 hgrc 파일에 인증내용을 넣어서 자동으로 처리되도록 만들 수 있다.

clone 받아온 경로가 C:\Repo1 이라고 가정할 때,

C:\Repo1\.hg\hgrc 파일을 열어서 아래의 내용 중 [auth] 탭 부분을 넣으면 이후부터는 커맨드를 날릴 때 일일이 인증을 하지 않아도 된다.

([path] 탭은 이미 있는 내용이다)

[path]

default = http://DOMAIN_NAME:9999/repo1 

 

[auth]

repo1.prefix = http://DOMAIN_NAME:9999/repo1

repo1.username = USERNAME

repo1.password = PASSWORD

 

 

 

 

끝.

 

 

 

 

[참조]

http://mercurial.selenic.com/wiki/HgServeNginx

http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

 

 

 

 

 

 

 

 

Posted by bloodguy
,