리버스 프록시 설정 시 discourse 구성 문제

Wikijs(Docker compose)와 Discourse를 설치했습니다.

Wikijs는 정상적으로 작동했고, 리버스 프록시도 설정되어 있었습니다.
Discourse 설치를 시작했는데 문제가 발생했습니다. 조사해보니 처음 Ubuntu를 설치할 때의 Docker 설치와 관련이 있을 수 있다는 것을 알게 되었습니다.

그래서 Wikijs 도커를 업데이트하기 위해 중지했습니다. Docker 저장소에서 모든 것을 다시 설치했습니다. Wikijs를 시작했는데 제가 볼 수 있는 오류는 없었습니다.
이번에는 Discourse도 부팅했는데 전체 부팅 시퀀스가 실행되었습니다. 그래서 사이트에 접속을 시도했습니다. Nginx는 다른 서버에 있으므로 리버스 프록시는 건드리지 않았습니다. 어때요? 도메인 이름이든 로컬 IP:포트든 어느 쪽으로도 접근할 수 없습니다.

둘 다 실행 중이라고 표시되고, Wikijs는 이전에는 접속이 가능했기 때문에 무엇이 문제인지 완전히 혼란스럽습니다. 정말 가까웠는데. :') Syslog에도 이 두 항목에 대한 내용이 없습니다.

아래에 추가 정보를 올립니다.

리버스 프록시:

server {
        listen 80;
        listen [::]:80;

        root /var/www/website.co.uk/html;
        index index.html index.htm index.nginx-debian.html;

        server_name website.co.uk www.website.co.uk;

        location / {
                rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
                rewrite ^/(.*)/$ /$1 permanent;
                try_files $uri/index.html $uri.html $uri/ $uri =404;
        }

        location /css {
                alias /var/www/website.co.uk/html/css;
        }

        location /images {
                alias /var/www/website.co.uk/html/media/images;
        }

        location /videos {
                alias /var/www/website.co.uk/html/media/videos;
        }

        location /music {
                alias /var/www/website.co.uk/html/media/music;
        }

        location /fonts {
                alias /var/www/website.co.uk/html/media/fonts;
        }

        location /scripts {
                alias /var/www/website.co.uk/html/media/scripts;
        }
}

server {
        listen 80;
        server_name wiki.website.co.uk;

        #ssl_certificate           /etc/nginx/cert.crt;
        #ssl_certificate_key       /etc/nginx/cert.key;

        #ssl on;
        #ssl_session_cache  builtin:1000  shared:SSL:10m;
        #ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        #ssl_prefer_server_ciphers on;

        location / {
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;

                proxy_pass      http://internalip:port;
                proxy_read_timeout 90;

                proxy_redirect http://127.0.0.1 https://internalip:port;
        }
}
server {
        listen 80;
        server_name forums.website.co.uk;

        #ssl_certificate           /etc/nginx/cert.crt;
        #ssl_certificate_key       /etc/nginx/cert.key;

        #ssl on;
        #ssl_session_cache  builtin:1000  shared:SSL:10m;
        #ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        #ssl_prefer_server_ciphers on;

        location / {
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;

                proxy_pass      http://internalip:port2;
                proxy_read_timeout 90;

                proxy_redirect http://127.0.0.1 https://internalip:port2;
        }
}

터널은 Discourse와 Wikijs가 설치된 동일한 머신에 설치되어 있지만, 그동안 문제가 없었기 때문에 이것이 원인일 것 같지는 않습니다.
포럼을 방문하면 Bad gateway가 표시되고, 위키의 경우 Nginx에서 504 타임아웃이 발생합니다.

이 문제에 대한 도움이 크게 필요할 것 같습니다. :slight_smile:
감사합니다, Blood.

app.yml 파일에서 다음 포트들을 변경해야 하나요:

expose:
  - "80:80"   # http
  - "443:443" # https

다음과 같이 변경해야 하나요:

expose:
  - "8000:80"   # http
  - "8080:443" # https

여기서 8000은 메인 Nginx 서버에서 요청을 받을 때 사용할 포트입니다.
제 설정에서 이 부분이 유일한 차이점인데, 테스트를 해보았지만 작동하지 않는 것 같습니다. (Discourse 앱을 다시 빌드했습니다.)

Discourse와 같은 머신에서 다른 웹사이트 실행하기를 참조하세요.

ssl 및 let’s encrypt 템플릿을 제거해야 합니다. nginx가 ssl을 처리해야 하며, discourse는 프록시가 연결할 수 있도록 포트 80만 필요로 합니다.

같은 홈 네트워크에서는 작동하지만, 실제로 같은 머신에 있지 않으므로 같은 머신에서는 그렇게 잘 작동하지 않나요? :slight_smile:

제가 이 문제를 해결하는 방식과 관련이 있다고 가정하고 있습니다.
“다른 서버가 포트 80 또는 443을 사용 중인 경우 ./discourse-setup을 사용하여 Discourse를 설정할 수 없습니다. 좋아하는 텍스트 편집기를 사용하여 samples/standalone.yml을 복사하고 편집해야 합니다.”
이는 제공된 가이드에 적혀 있는 내용입니다. 저는 그 다른 서버에서 Nginx를 실행하고 있습니다.