Run other websites on the same machine as Discourse

즉, 서브도메인 대신 서브폴더(경로 접두사)에서 Discourse를 서빙하길 원하시나요?

1개의 좋아요

좋아요. 내가 찾고 있는 것 같은데요. 감사합니다.

1개의 좋아요

이 안에 어떻게 들어가는 건가요?? 즉, 그 부분을 어떻게 찾나요?? 같은 줄이 2세트 있습니다! 어떤 것을 수정하거나 변경해야 하는 건가요??

여기부터 수정:

아니에요..! 시간 내주셔서 감사합니다! 제가 직접 알아냈습니다 :upside_downface:

참고로, 당신의 방식은 완전히 작동하지 않습니다

2개의 좋아요

U는 최소한 discourse 3에서 환경 변수를 설정해야 합니다.

app.yml 파일을 열고

환경 변수를 찾아서 값을 입력하세요.

감사합니다.
처음에 discourse standalone를 설정했는데, HTTP에서 올바른 가입 페이지가 표시되었습니다. 그 후 Lets Encrypt 접근 권한이 없는 테스트 랩 환경에서 사용하기 때문에 인증서 없이 nginx를 설치했습니다. 지금은 가입 페이지는 보이지만 스타일링이 적용되지 않습니다. 호스트의 nginx 로그에서 404 오류가 확인됩니다. 이 문제를 해결할 아이디어가 있을까요?
감사합니다.
해결: debian 11과 nginx 18.0-6에서 기본적으로 설정되어 있는 try_files $uri $uri/ =404; 주석을 처리해야 했습니다.

1개의 좋아요

오류. 이 설정을 한 후 크롬 브라우저에서 다음과 같은 오류가 표시됩니다:

Mixed Content: '<URL>'에 있는 페이지는 HTTPS로 로드되었지만, 보안이 없는 폰트 '<URL>'을 요청했습니다. 이 요청은 차단되었습니다. 콘텐츠는 HTTPS로 제공되어야 합니다.

1개의 좋아요

force_https를 켰나요?

1개의 좋아요

네, certbot --nginx 단계에서 그렇게 했습니다. 여러 번 시도해 봤지만 작동하지 않았습니다.

nginx가 아니라 discourse 설정에서 force_https를 설정해야 합니다. 환경 변수를 사용하는 것이 가장 좋지만, admin/settings에 접근할 수 있다면 UI에서도 설정할 수 있습니다.

2개의 좋아요

위 단계를 따라 nginx를 성공적으로 실행했지만, URL에 접근할 때 ERR_TOO_MANY_REDIRECTS 오류가 발생했습니다.



원인을 알 수 있게 도와주실 수 있을까요?

unix:/shared/nginx.http.sock에 bind() 실패 (95: 지원되지 않는 작업)

그래서 혼란스럽습니다. 기존 웹서버에 설치 중이라 /discourse-setup을 실행할 수 없는데, /discourse-setup을 실행해야만 생성되는 .yml 파일을 편집해야 한다고 합니다. 즉, app.yml이 존재하지 않는데 어떻게 편집할 수 있을까요?

샘플 디렉터리에서 standalone.yml을 복사하세요.

이 게시글을 스무 번이나 읽었음에도 해당 섹션의 마지막 줄에 "추가됨"이라고 적혀 있다는 사실을 놓치고 말았으니, 정말 바보 같다는 느낌이 듭니다. @riking 님, 도입부를 다음과 같이 수정해 주실 수 있으신가요:

1개의 좋아요

제안된 변경 사항을 적용했고(그리고 apparently 위키인지 아닌지에 대한 게시글들을 삭제했습니다 – 편집 권한이 제한되어 있어서 죄송합니다). 미묘한 변경이지만, 다른 분들에게 도움이 될 것 같습니다. 감사합니다.

2개의 좋아요

제 환경은 약간 다릅니다. 리버스 프록시가 호스트 머신에서 실행되는 것이 아니라 별도의 Docker 컨테이너에서 실행되고 있습니다.
현재는 두 컨테이너를 연결하기 위해 Docker 네트워크를 사용하고 있으므로, Discourse를 Unix 소켓을 통해 노출하지 않고 있습니다.

문제없이 작동하지만, 상당한 단점이 있습니다. 레이트 리미팅이 리버스 프록시의 IP만 인식하여, 결과적으로 리버스 프록시 자체를 잘못 레이트 리미팅하는 문제가 발생합니다…

여러 가지 옵션을 생각해 볼 수 있습니다:

  1. 레이트 리미팅 템플릿을 제거합니다. (최선의 선택은 아닙니다…)
  2. 리버스 프록시를 set_real_ip_from으로 설정하는 나만의 템플릿을 생성합니다.
  3. 레이트 리미팅 템플릿을 조정하여 $binary_remote_addr 대신 $http_x_forwarded_for를 사용하도록 변경합니다.
  4. 리버스 프록시 컨테이너에서 Unix 소켓을 노출합니다. (가능 여부와 방법이 확실하지 않습니다.)

이상적으로는 나만의 템플릿을 만들거나 기존 템플릿을 수정하지 않고, 기본 설정을 최대한 그대로 사용하는 것이 좋습니다. 즉, 옵션 4를 선호합니다.

어떤 아이디어나 장단점, 의견이 있으신가요?

예전에 이 문제를 겪으셨다는 걸 알지만, 오늘 밤에 나도 같은 문제를 겪었고 내 경우에는 효과가 있는 해결책을 찾았습니다.

제 문제는 레지스트러가 프록시로 작동하면서 SSL/TLS 설정이 "flexible"으로 되어 있던 것이었습니다. 이를 "Full"로 변경하니 문제가 즉시 해결되었는데, 20번쯤 재구축을 해본 뒤에야 이 방법이 떠올랐으면 좋았을 텐데 아쉬울 따름입니다.

1개의 좋아요

두 컨테이너 설치 환경이란 무엇을 의미하는 건가요? 감사합니다.

1개의 좋아요

컨테이너는 Docker의 개념으로, 운영체제와 독립적으로 설정할 수 있는 격리된 처리 단위입니다.

일반적으로 Discourse와 그 모든 의존성(표준 설치의 경우)은 단일 컨테이너에서 실행됩니다.

더 고급 설치 방식으로는 다른 서비스가 별도의 컨테이너에서 실행되거나, Discourse가 두 개의 컨테이너(데이터베이스용 하나, 웹용 하나)로 나뉘어 실행되는 “두 컨테이너 설치” 방식도 있습니다.

참고: Discourse는 일반 Docker에서 사용되는 것과 완전히 동일한 것은 아닌 자체적인 런처를 사용합니다.

5개의 좋아요

질문이 있습니다. 리버스 프록시가 별도의 Docker 컨테이너에 있는 경우에도 유닉스 소켓을 사용할 수 있을까요?