HTTP 기본 인증으로 Discourse 사이트의 액세스 제한

이주(migration)를 위해 사이트를 스테이징하는 경우처럼, 아직 일반 대중이 Discourse 인스턴스에 접근할 수 없기를 원할 수 있습니다.

참고: 최근 basic-auth를 사용할 때 일부 정적 자산(static assets)이 로드되지 않는 문제를 겪었습니다. app.yml의 env 섹션에 DISCOURSE_LOGIN_REQUIRED: true를 추가하여 사이트를 login_required로 설정하는 것이 더 쉽습니다.

다음 설정을 적용하면 모든 방문자에게 사용자 이름과 비밀번호를 묻는 간단한 브라우저 확인 대화상자가 표시됩니다. 사이트를 액세스하려면 이 인증이 필요합니다.

:information_source: 참고: 사용자는 여전히 일반적인 Discourse 가입 및 로그인 절차를 수행해야 합니다.

basic auth 자격 증명

암호화된 비밀번호 생성

htpasswd -bn =username= =password=

참고: 이를 위해 htpasswd가 필요합니다. Ubuntu/Debian의 경우 apache2-utils 패키지에 포함되어 있습니다. htpasswd가 설치된 다른 머신에 액세스 권한이 있다면, 그곳에서 실행하면 됩니다. 검색 엔진을 차단하는 것이 유일한 목적이라면, 여기 예시 비밀번호를 사용하는 데 아무런 문제가 없습니다.

암호화된 사용자 이름/비밀번호는 여기에 입력

app.yml에 추가

# basic auth
  after_bundle_exec:
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic on"
       to: "auth_basic on"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "# auth_basic_user_file /etc/nginx/htpasswd"
       to: "auth_basic_user_file /etc/nginx/htpasswd"
    - replace:
       filename: "/etc/nginx/conf.d/discourse.conf"
       from: "location = /srv/status {"
       to: "location = /srv/status {
           auth_basic off;"
    - file:
       path: "/etc/nginx/htpasswd"
       contents: |
         =auth_string=    

after_bundle_exec 섹션은 discourse 컨테이너 내부의 nginx 설정을 변경합니다. 라이브로 전환할 준비가 되면 이 섹션을 삭제하고 다시 빌드하면 됩니다.

14개의 좋아요