주거용 인터넷 환경에서 Cloudflare Tunnel을 이용해 Discourse 설치하기

yo @Falco, nginx 로그에 real_ip(cf가 CF-Connecting-IP 헤더로 제공하는)가 제대로 들어오고 있나요? 제 경우에는 안 들어오네요. cloudflared의 IP만 보입니다.

아래 중 하나 또는 둘 다 처리가 필요할 것 같습니다(조사 후 후속 조치하겠습니다):

  • cloudflared의 IP에 대해 nginx 설정에 set_real_ip_from 설정 라인을 추가해야 합니다. 만약 이것이 문제라면, templates/cloudflare.template.yml에서 제공하는 다른 set_real_ip_from 라인들은 argotunnel 사용자에게 필요하지 않을 것으로 추측됩니다. 이 경우, 메인 app.yml에서 cloudflared IP를 환경 변수 등으로 가져오는 별도의 argotunnel 템플릿을 docker 저장소에 추가하는 것이 좋을 수 있습니다.
  • log_format 수정. 이 부분은 아마도 문제가 아닐 것 같습니다. 필요 없음 확인

수정:

제가 동작하게 만드는 방법입니다:

cloudflare 템플릿을 사용하지 마세요. 의미가 없습니다.
대신, 다음 내용을 app.yml에 병합하세요:

hooks:
  after_web_config:
    - file:
        path: /etc/nginx/conf.d/cloudflare_tunnel_real_ip.conf
        contents: |
          # restore original visitor IPs (ngx_http_realip_module)
          set_real_ip_from 10.100.20.200/32; # your cloudflared/argotunnel IP range
          real_ip_header CF-Connecting-IP;

참고로, 이 설정은 자동으로 nginx의 http 컨텍스트에 들어가는데, 이것이 적절한 위치입니다.

P.S. 제 생각에는 깔끔함을 위해 cloudflare 템플릿도 nginx 설정을 sed -i를 사용해 /etc/nginx/conf.d/discourse.conf에 추가하는 대신 별도의 파일로 생성해야 합니다.

1개의 좋아요