Collabora 코드를 TLS 종료를 사용하여 Nginx 뒤에서 실행

Collabora CODE를 HTTPS 뒤에 배치한 후 문서 로딩이 지연될 수 있습니다. 이는 프록시와 CODE가 TLS 종료 위치를 다르게 인식하거나 프록시가 WebSocket 트래픽을 차단하기 때문입니다. Nginx에서 공개 인증서를 제공하고, 비공개 CODE 리스너로 포워딩하며, WebSocket 경로를 전달하도록 구성하십시오. CODE 설정은 다음 ssl.enable=false과 같습니다 ssl.termination=true.

이 예제에서는 Docker 호스트에서 Nginx를 사용합니다. 다른 컨테이너에서 프록시를 사용하려면 Docker의 프라이빗 네트워크를 사용하십시오. 버전별 옵션은 Collabora의 프록시 설정 및 CODE Docker 이미지 가이드를 참조하십시오.

SSL 종료 변경 사항을 이해하세요

TLS 종료는 Nginx가 브라우저의 HTTPS 연결 및 인증서를 처리하는 동안 CODE가 그 뒤에서 9980번 포트를 사용하여 HTTP 연결을 사용하는 것을 의미합니다. 해당 리스너는 비공개로 유지해야 합니다. 단일 호스트의 루프백 인터페이스에 바인딩하거나, 비공개 Docker 네트워크를 사용하십시오. 프록시에서 CODE로의 트래픽이 신뢰할 수 없는 네트워크를 통과하는 경우, 해당 링크를 TLS 또는 터널로 보호하십시오.

브라우저의 HTTPS 연결이 Nginx에서 종료된 후, 비공개 HTTP 연결이 127.0.0.1 포트 9980의 Collabora CODE 컨테이너에 도달하는 것을 보여주는 네트워크 다이어그램입니다.
브라우저는 Nginx에 HTTPS를 사용하여 연결하고, HTTP는 프록시와 CODE 간의 비공개 링크에만 사용됩니다.

용기와 증명서를 준비하세요.

  1. 공개 호스트 이름을 선택합니다. Nginx 프록시를 가리키는 DNS 레코드를 생성합니다 office.example.com. 해당 호스트 이름에 대한 인증서를 발급받고, 인증서 체인과 개인 키를 프록시에 설치합니다.
  2. CODE의 포트는 비공개로 유지하세요. Docker 호스트에 Nginx가 직접 설치된 경우, 컨테이너 포트는 루프백 인터페이스에만 공개하세요. Compose에서 관련 매핑은 다음과 같습니다 . 방화벽 및 네트워크 설계에서 명시적으로 제한하지 않는 한 모든 호스트 인터페이스에 127.0.0.1:9980:9980포트를 공개하지 마세요 .9980:9980
  3. CODE의 TLS 모드를 설정합니다. Compose 서비스에서 CODE 구성에 두 가지 옵션을 추가합니다. 아래 예시에서는 이미지 변수를 사용하여 검토 및 테스트한 특정 태그를 지정할 수 있습니다.
Docker Compose 편집기에서 Collabora 서비스가 127.0.0.1의 9980번 포트에 바인딩된 것을 보여줍니다.
127.0.0.1에 바인딩하면 CODE 리스너는 Docker 호스트에서만 접근 가능합니다.
Collabora CODE에서 Docker Compose 환경 설정에 ssl.enable=false 및 ssl.termination=true를 지정합니다.
이 옵션들은 CODE에게 TLS가 리버스 프록시에 의해 처리된다는 것을 알려줍니다.
services:
  collabora:
    image: ${COLLABORA_CODE_IMAGE}
    restart: unless-stopped
    ports:
      - "127.0.0.1:9980:9980"
    environment:
      extra_params: "--o:ssl.enable=false --o:ssl.termination=true"

테스트를 거쳐 고정된 이미지 태그로 설정하세요 COLLABORA_CODE_IMAGE. WOPI 호스트 허용 목록과 인증 설정을 유지하세요. TLS 종료는 이러한 설정을 대체하지 않습니다. Nginx가 다른 Docker 서비스인 경우 호스트 포트 매핑을 생략하고 http://collabora:9980공유 사설 네트워크로 프록시하세요.

Nginx가 TLS 및 프록시 CODE 트래픽을 종료하도록 구성합니다.

  1. HTTPS 가상 호스트를 추가합니다. 공개 Collabora 호스트 이름에 대한 Nginx 서버 블록 내에 다음 위치를 입력합니다. 예시 호스트 이름과 인증서 경로는 실제 경로로 바꿔야 합니다. 이 구성은 루트 수준의 Collabora URL에 대한 것이며, .과 같은 경로 아래에 마운트된 URL에는 적용되지 않습니다 /office/.
TLS 리스너, office.example.com 서버 이름 및 인증서 파일 경로를 포함하는 Nginx 설정 코드 조각입니다.
Nginx는 공개 인증서를 보유하고 있으며 Collabora 호스트 이름에 대해 HTTPS를 통해 수신 대기합니다.
server {
    listen 443 ssl;
    server_name office.example.com;
    ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;

    location ^~ /browser {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/discovery {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/capabilities {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ ^/cool/(.*)/ws$ {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ^~ /cool/adminws {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ~ ^/(c|l)ool {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

편집기 자산, 검색 및 기능 경로를 전달합니다. 해당 /cool/.../ws위치 에는 Nginx가 WebSocket 터널링을 수행할 수 있도록 HTTP/1.1 및 Upgrade 헤더가 필요합니다. 읽기 시간 초과가 길어지면 편집 세션이 계속 열려 있게 됩니다. Nginx의 WebSocket 프록싱 문서를/cool/adminws 참조하세요 .

Nginx 위치 차단으로 인해 브라우저 및 호스팅 검색 경로가 비공개 CODE 리스너로 전달됩니다.
편집기 자산, WOPI 검색 및 기능 엔드포인트를 동일한 CODE 리스너로 전달합니다.
HTTP 1.1, Upgrade 및 Connection 헤더를 사용하고 긴 읽기 시간 제한을 설정한 Nginx WebSocket 위치 설정입니다.
메인 WebSocket 경로는 HTTP/1.1 및 Upgrade 헤더가 필요합니다. 그렇지 않으면 편집기가 로드되더라도 사용할 수 없게 될 수 있습니다.
멋진 관리자 웹소켓 및 Collabora의 멋진 또는 lool 요청 경로를 위한 Nginx 구성
관리용 웹소켓과 나머지 문서 전송 경로도 함께 전달하십시오.

변경 사항을 적용하고 버전별 동작을 확인하세요.

  1. Nginx를 다시 로드하기 전에 유효성을 검사하십시오. 명령어를 실행하십시오 nginx -t. Nginx에서 구성 테스트가 성공했다고 보고하는 경우에만 계속 진행하십시오. 그런 다음 시스템의 일반 서비스 명령어를 사용하여 Nginx를 다시 로드하십시오.
  2. CODE 컨테이너를 다시 생성합니다. 명령어를 사용하여 Compose 변경 사항을 적용합니다 docker compose up -d collabora. 컨테이너 로그에서 시작 오류를 확인하고 활성 구성에 두 가지 SSL 옵션이 모두 포함되어 있는지 확인합니다.
리버스 프록시 구성을 검증하기 위해 nginx -t 명령어가 실행될 터미널 창이 열려 있습니다.
새로 고침하기 전에 구문 검사를 실행하여 잘못된 서버 차단으로 인해 다른 사이트가 중단되는 것을 방지하십시오.

버전 관련 정보를 드리자면, Collabora 저장소는 2026년 7월 22일에 coolwsd --probeCODE 26.04.2.2 이상 버전의 내장 상태 확인 기능이 프록시에서 TLS 연결이 종료되는 경우에도 9980번 포트에서 HTTPS 연결을 확인할 수 있다는 보고서를 기록했습니다. 이로 인해 컨테이너가 비정상으로 표시되더라도 공용 엔드포인트는 정상적으로 응답할 수 있습니다. 이미지 태그에 대한 문제 기록을 검토하고 , 상태 확인만으로 TLS 오류를 판단하기 전에 공용 엔드포인트와 편집 세션을 테스트해 보시기 바랍니다. 다른 모니터링 도구로 대체되지 않는 한 상태 확인 기록을 유지하십시오.

HTTPS 검색 및 실제 편집 세션을 검증합니다.

https://office.example.com/hosting/discovery브라우저 또는 다른 방법을 통해 요청하십시오 curl. 해당 요청은 공개 HTTPS 호스트 이름을 사용하는 URL과 함께 HTTPS를 통해 WOPI 검색 XML을 반환해야 합니다. 인증서 경고는 호스트 이름 또는 인증서 문제를 나타내고, HTTP URL은 TLS 모드 또는 전달 체계 불일치를 나타내며, 502 오류는 프록시가 CODE에 연결할 수 없음을 나타냅니다.

다음으로, 연결된 WOPI 호스트에서 테스트 문서를 열고 편집이 정상적으로 작동하는지 확인합니다. 브라우저 개발자 도구에서 /cool/.../ws요청이 WebSocket 연결을 설정해야 합니다. 검색은 성공했지만 편집이 멈추는 경우 WebSocket 위치와 헤더를 확인하십시오. 통합 설정에서 WOPI 호스트를 허용하고 해당 호스트를 가리키는지 확인합니다 https://office.example.com.

설정이 성공적으로 완료되었습니다. 인증서가 신뢰할 수 있게 되었고, 검색 시 HTTPS를 사용하며, 9980번 포트는 비공개로 유지되고, 테스트 문서가 WebSocket을 통해 열리고 편집됩니다.

댓글 남기기

Collabora 모바일 키보드가 열릴 때 텍스트가 계속 표시되도록 설정

Collabora 모바일 키보드가 열릴 때 텍스트가 계속 표시되도록 설정

Collabora Online에서 모바일 브라우저 키보드가 텍스트를 가리는 문제를 해결하는 방법을 안내합니다. 브라우저, 내장 WebView, 호스트 페이지에 대한 개별 점검을 포함하여 빠른 해결 방법을 제공합니다.

ONLYOFFICE에서 원치 않는 인쇄 및 다운로드를 중지하세요

ONLYOFFICE에서 원치 않는 인쇄 및 다운로드를 중지하세요

ONLYOFFICE 링크, 회의실 구성원 또는 Docs API 세션에 대한 인쇄 및 다운로드 제한을 설정한 다음 수신자 계정에서 제한 사항을 확인하십시오.

ONLYOFFICE Workspace에 대한 안정적인 백업 일정을 예약하세요

ONLYOFFICE Workspace에 대한 안정적인 백업 일정을 예약하세요

ONLYOFFICE Workspace에서 백업 대상, 일정, 메일 범위 및 보존 기간을 설정한 다음 아카이브를 복원할 준비가 되었는지 확인합니다.

ONLYOFFICE Docs Enterprise를 공식 작성 파일을 사용하여 배포하세요.

ONLYOFFICE Docs Enterprise를 공식 작성 파일을 사용하여 배포하세요.

엔터프라이즈 Docker Compose 스택을 시작하고, 라이선스와 데이터를 저장하고, JWT를 안전하게 구성하고, 편집기가 통합될 준비가 되었는지 확인합니다.

재사용 가능한 ONLYOFFICE 매크로로 스프레드시트 텍스트를 정리하세요

재사용 가능한 ONLYOFFICE 매크로로 스프레드시트 텍스트를 정리하세요

ONLYOFFICE JavaScript 매크로를 사용하여 정의된 스프레드시트 범위에서 인쇄되지 않는 문자를 제거하고 불필요한 공백을 없애고, 안전한 검토 워크플로를 적용할 수 있습니다.

ONLYOFFICE Workspace의 기본 저장 위치 변경

ONLYOFFICE Workspace의 기본 저장 위치 변경

포털 데이터를 기본 디스크에서 지원되는 클라우드 스토리지 공급자로 이동하거나, Docker 데이터의 호스트 볼륨 매핑을 변경하여 안전하게 재배치할 수 있습니다.

Linux에서 ONLYOFFICE Document Server를 완전히 제거하십시오.

Linux에서 ONLYOFFICE Document Server를 완전히 제거하십시오.

문서 서버가 Linux 패키지를 사용하는지 Docker를 사용하는지 확인하고, 해당 구성 요소만 제거한 다음, 공유 서비스를 실수로 삭제하지 않고 나머지 데이터를 확인합니다.

OnlyOffice 공동 편집 지연 현상 해결: 병목 현상 찾기

OnlyOffice 공동 편집 지연 현상 해결: 병목 현상 찾기

공동 편집 속도 저하의 원인을 Docker 리소스 사용량, 프록시 연결 또는 문서 로드에서 추적한 다음 측정값에 맞는 해결 방법을 선택하십시오.

Docker에서 ONLYOFFICE Docs에 대한 HTTPS 구성

Docker에서 ONLYOFFICE Docs에 대한 HTTPS 구성

TLS 종료 위치를 선택하고, 신뢰할 수 있는 인증서와 개인 키를 안전하게 마운트하고, Docker로 컨테이너화된 ONLYOFFICE Docs 서버에 대한 HTTPS 액세스를 확인하십시오.

PHP 앱을 ONLYOFFICE Docs에 연결하고 편집 내용을 저장하세요.

PHP 앱을 ONLYOFFICE Docs에 연결하고 편집 내용을 저장하세요.

ONLYOFFICE 편집기를 PHP 앱에 내장하고, JWT로 구성 파일에 서명하고, 보안 콜백을 통해 편집된 파일을 저장하세요.