443 포트를 제외한 다른 포트 사용 시: 비표준 포트 URL로 리디렉션 비활성화

app.yml 파일을 변경했습니다.

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

이 상태에서 https://mydomain.com:20633 을 통해 Discourse에 접속하려고 하면, 작동하지 않는 https://mydomain.com 으로 리다이렉트되는 문제가 발생합니다.

아래와 같이 설정을 변경하면

expose:
  - "20632:20632"   # http
  #- "443:443" # https
  - "20633:20633"

netstat -tulpn 명령어로 확인했을 때 해당 포트에서 리스닝 중인 것으로 보이지만, 실제로 접속을 시도하면 타임아웃이 발생합니다.

서브폴더에서 Discourse를 실행하는 방법에 대한 Serve Discourse from a subfolder (path prefix) instead of a subdomain 포럼 글을 찾았지만, 제 상황에는 적용되지 않습니다.

또한 Install Discourse on a residential internet with Cloudflare Tunnel 글도 찾았는데, 방향성은 맞지만 제가 원하는 내용과는 완전히 일치하지 않습니다.

P.S. 포럼 링크를 제거한 점 죄송합니다. 링크를 포함하면 게시가 불가능하기 때문입니다.

비표준 포트에서 실행하는 것은 지원하지 않습니다. 80/443 포트가 이미 사용 중이라면, 해당 포트가 비어 있는 별도의 서버를 사용하거나 다른 서비스와 Discourse 사이에 리버스 프록시를 구성해야 합니다.

가끔 "지원하지 않습니다"라는 말은 "여기서 기대할 수 있는 도움의 범위를 벗어났다"는 뜻이지만, 이번에는 "시도하는 것 자체가 시간 낭비다"라는 뜻입니다.

포트는 일반적인 의미에서 "점용"된 것이 아닙니다. Discourse는 해당 시스템에서 포트 80과 443을 사용할 수 있으며, 이미 별도의 서버에서 자체적으로 실행 중입니다.
현재 URL에서 포트를 제거하고 리다이렉션을 비활성화하는 단계에서 막혀 있으며, 이 부분을 해결하면 모든 것이 예상대로 작동할 것입니다.

그 리다이렉트를 막을 수 없습니다.

표준 포트에서 게시할 수 없다면 아예 작동하지 않습니다. 여기서는 :80/443 포트가 사용 가능한 서버를 사용하거나, 대체 토론 플랫폼을 선택하는 두 가지 선택지가 있습니다.

nginx 리버스 프록시 설정에 대해 도와줄 수 있나요?

여러 옵션을 시도해 봤지만 성공하지 못했습니다.

server {
    listen 20633 ssl;
    server_name mydomain.com;
	
	ssl_certificate /etc/letsencrypt/live/mensa.myftp.org/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/mensa.myftp.org/privkey.pem;

    location / {
        # 정규 표현식을 사용하여 proxy_pass URL에서 포트 제거
        # 정규 표현식의 캡처된 부분($1)이 proxy_pass URL에서 대체됩니다.
        # 실제 백엔드 서버 IP와 포트는 proxy_pass 지시문에서 별도로 지정됩니다.
        proxy_pass http://192.168.178.31:80/
		#$request_uri;
		proxy_redirect http://192.168.178.31:80/ $scheme://$host:20633/;
		#return 301 $scheme://$host:$server_port/home;
		#proxy_redirect http://192.168.178.31:20633 $scheme://$host:80;
        
        # 클라이언트가 백엔드 서버로 보낸 Host 헤더 유지
        #proxy_set_header Host $host;
		proxy_set_header Host $http_host;

    }
}

Discourse와 동일한 머신에서 다른 웹사이트를 실행하는 방법에 대한 가이드를 확인하세요: Run other websites on the same machine as Discourse.

해당 튜토리얼은 유닉스 소켓을 통해 동일한 서버에서 실행하는 방법을 다루고 있습니다. 리버스 프록시를 다른 시스템에서 다른 포트와 함께 실행하기 위한 구성도 있을까요? 이런 경우가 더 자주 발생할 것 같아서 가능할 것이라 생각합니다. 다른 호스트에는 이미 인증서가 준비되어 있습니다.

분명히 말씀드리면: 이 설정은 테스트 전용입니다. 프로덕션 환경에서는 443 포트에서 실행될 예정이지만, 개발 및 테스트를 위해서는 집에 있는 VM이 완전히 충분하며, 그 사이에 서버를 임대하는 비용을 절약할 수 있습니다.