WebSocket 연결을 깨뜨리지 않고 Collabora를 Nginx 뒤에 설치하는 방법

Collabora를 Nginx의 전용 HTTPS 호스트 이름에 배치하고, 편집기 및 검색 경로를 로 포워딩하며 coolwsd, 라이브 소켓 경로에 WebSocket 업그레이드 헤더를 명시적으로 전달하십시오. 단일 호스트의 경우 Nginx는 공용 TLS를 종료하고 개인 인터페이스를 통해 Collabora로 HTTP 요청을 보낼 수 있습니다. Nginx와 Collabora가 서로 다른 컨테이너에서 실행되는 경우, 공유 네트워크에서 대신 Collabora 서비스 이름을 사용하십시오 127.0.0.1.

브라우저의 HTTPS 포트(443번 포트)가 Nginx를 통해 Collabora의 비공개 HTTP 포트(9980번 포트)로 연결됩니다.
이 예시의 연결 구성은 다음과 같습니다. 브라우저는 443번 포트에서 HTTPS를 사용하고, Nginx는 트래픽을 9980번 포트의 비공개 HTTP 업스트림을 통해 Collabora로 전달합니다.

이 예제는 사용자가 인증서를 열고 https://office.example.comNginx가 인증서를 처리한다고 가정합니다. Collabora의 기본 수신 포트는 9980입니다. 배포 환경에서 접근 가능한 포트를 사용하십시오. `/collabora.com`과 같은 URL 접두사는 https://example.com/collabora/경로 및 서비스 루트 설정이 일치해야 하므로 이 루트 호스트 구성은 변경 없이 적용되지 않습니다.

1. 업스트림 및 WebSocket 연결 맵을 정의합니다.

Nginx 컨텍스트에 Collabora의 업스트림 이름과 클라이언트가 WebSocket을 요청할 때만 http연결 헤더를 설정하는 맵을 추가합니다 . 이 블록은 모든 블록 외부에 배치해야 합니다. Nginx가 다른 경로로 Collabora에 연결하는 경우 주소를 변경하십시오.upgradeserver

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

upstream coolwsd {
    server 127.0.0.1:9980;
}

Nginx 자체가 컨테이너인 경우, 127.0.0.1업스트림은 Collabora 컨테이너가 아닌 해당 Nginx 컨테이너를 가리킵니다. 공유 Docker 네트워크에서는 업스트림을 server collabora:9980;해당 네트워크에서 확인되는 서비스 이름을 사용하여 지정할 수 있습니다.

2. HTTPS 가상 호스트 및 Collabora 경로를 추가합니다.

server`/ `에 대한 HTTPS 블록 내에서 office.example.com브라우저 자산, 검색 엔드포인트, WebSocket 연결 및 나머지 Collabora 경로를 전달합니다. 위치는 Collabora의 프록시 지침을 따릅니다. Nginx가 WebSocket 헤더를 올바르게 적용하도록 특정 소켓 위치는 더 넓은 cool`/` 경로 위에 유지해야 합니다.lool

Nginx 서버 구성에서 브라우저 자산, 검색 및 기능을 위한 위치를 분리하고 이를 Collabora 업스트림으로 라우팅합니다.
Nginx 라우팅 예시: 브라우저 자산, WOPI 검색 및 기능은 모두 동일한 Collabora 업스트림으로 전달됩니다.
server {
    listen 443 ssl;
    server_name office.example.com;

    ssl_certificate     /path/to/fullchain.pem;
    ssl_certificate_key /path/to/private-key.pem;

    location ^~ /browser {
        proxy_pass http://coolwsd;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }

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

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

    location ~ ^/cool/(.*)/ws$ {
        proxy_pass http://coolwsd;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600s;
    }

    location ^~ /cool/adminws {
        proxy_pass http://coolwsd;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 3600s;
    }

    location ~ ^/(c|l)ool {
        proxy_pass http://coolwsd;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

호스트에 맞는 인증서 경로로 교체하십시오. 관리 콘솔을 사용하지 않는 설치 환경이라면 /cool/adminws문서 편집에 해당 위치가 필요하지 않을 수 있지만, 기본 /cool/.../ws경로는 필수적입니다. proxy_read_timeout여기서 1시간은 예시일 뿐이며, 모든 경우에 적용되는 요구 사항은 아닙니다. Nginx의 기본 프록시 읽기 시간 초과는 연속 읽기 간 60초입니다. 세션에 필요한 유휴 시간보다 긴 값을 선택하거나, 지원되는 경우 적절한 WebSocket ping 트래픽을 활용하십시오.

3. Collabora의 TLS 모드를 프록시 홉에 맞게 설정합니다.

Nginx에서 Collabora로 연결되는 프라이빗 홉이 HTTP를 사용하더라도 사용자는 HTTPS를 통해 Collabora에 접속해야 합니다. TLS 종료 구성에서는 coolwsd프록시를 TLS 종료자로 처리하도록 설정하십시오. 즉, 내부 리스너에서는 SSL을 비활성화하고 SSL 종료를 활성화해야 합니다. 패키지 또는 컨테이너 이미지에서 지원하는 방법을 통해 이러한 설정을 적용한 다음, Collabora 설명서에 따라 Collabora를 재시작/재로드하십시오.

HTTP 1.1, Upgrade 및 Connection 헤더, 그리고 읽기 시간 초과를 사용하는 Collabora WebSocket 경로에 대한 Nginx 위치입니다.
WebSocket 경로 발췌: HTTP/1.1 및 Upgrade/Connection 헤더를 사용하면 Nginx가 편집기의 실시간 연결을 터널링할 수 있습니다. 환경에 맞게 읽기 시간 제한을 조정하십시오.

신뢰할 수 있는 사설 네트워크에서만 HTTP 업스트림을 사용하고 포트 9980에 대한 공용 액세스를 차단하십시오. Nginx와 Collabora 간에 암호화가 필요한 정책이 있는 경우 HTTPS 업스트림을 사용하고 인증서 확인을 올바르게 구성하십시오. 인증서 불일치를 숨기기 위해 확인을 비활성화하지 마십시오. Collabora의 프록시 설정 문서에서는 프록시에서의 SSL과 프록시와 Nginx 간의 SSL을 구분합니다 coolwsd.

또한 스토리지 통합에서 Collabora URL을 공개 HTTPS 호스트 이름으로 설정하십시오. Nextcloud의 관리 설명서에 따르면 브라우저와 두 서버 모두 HTTP(S)를 통해 서로 통신할 수 있어야 하며, 외부 프로토콜도 일치해야 합니다. WOPI 허용 목록을 예상되는 스토리지 호스트와 Collabora 주소로 제한하십시오. 프록시 라우팅 오류를 해결하기 위해 허용 목록을 광범위하게 완화하지 마십시오.

4. 양쪽에서 구성을 테스트합니다.

Nginx를 다시 로드하기 전에 구문을 확인하세요.

sudo nginx -t
sudo systemctl reload nginx

Nginx가 컨테이너에서 실행되는 경우 해당 컨테이너의 유효성 검사 및 재로드 절차를 사용하십시오. Nextcloud 호스트에서 실제 호스트 이름을 사용하여 공개 Collabora 엔드포인트를 테스트하십시오.

curl -fsS https://office.example.com/hosting/discovery -o /dev/null
curl -fsS https://office.example.com/hosting/capabilities -o /dev/null

사용자 브라우저에서도 해당 HTTPS URL을 열어보세요. 연결 가능성을 확인하는 방법이지만, 검색 응답이 성공적이라고 해서 문서 편집이 제대로 작동하는 것은 아닙니다. 문서를 열고 브라우저의 네트워크 패널을 사용하여 자산이 로드되고 /cool/.../ws연결이 유지되는지 확인하세요. HTTP/1.1 WebSocket 연결이 성공적으로 이루어지면 일반적으로 다음과 같은 메시지가 표시됩니다 101 Switching Protocols. 정확한 표시는 브라우저와 전송 방식에 따라 다를 수 있습니다. 이 표준 설정이 Firefox에서는 작동하지만 Chromium에서는 실패하는 경우 요청 메서드와 프로토콜을 검사하세요. Collabora 25.04 버전에 대한 문제 보고서에서 Chromium WebSocket이 HTTP/2를 사용하여 연결 CONNECT되고 405 오류를 수신하는 문제가 보고되었으며, 2026년 10월 9일 확인 결과 해당 보고서는 여전히 열려 있습니다. 이는 특정 버전에서만 발생하는 문제이며, 모든 경우에 공통적으로 나타나는 현상은 아닙니다. HTTP/2 설정을 변경하기 전에 Collabora, Nginx 및 브라우저 버전을 비교하세요. Collabora 문제 12155를 참조하세요 .

터미널 화면에 일반적인 빈 문서 편집기 위에 Collabora 검색 엔드포인트에 대한 curl 명령이 표시됩니다.
검증 보기: 터미널에는 실행할 검색 검사가 표시되고, 편집기는 별도의 실제 문서 테스트를 준비합니다. 이 예시에서는 결과가 암시되지 않습니다.

검색에 실패하면 Nginx의 오류 로그를 확인하고 업스트림 호스트 이름, 포트 및 프로토콜을 점검하십시오. 검색은 되지만 편집에 연결할 수 없는 경우 WebSocket 경로, 헤더, 시간 초과 및 Collabora 로그를 확인하십시오. WOPI 인증 오류는 스토리지 호스트 허용 목록과 관련이 있습니다. Nextcloud Office 문제 해결 가이드에서는 브라우저, Nextcloud 및 Collabora에서 연결 가능성을 확인한 다음 두 서버의 로그를 검토할 것을 권장합니다.

Nginx WebSocket 프록싱 가이드에서는 `idle timeout` 및 `idle timeout` 매개변수를 명시적으로 전달해야 하는 이유와 유휴 시간 초과 동작이 중요한 이유를 설명합니다 Upgrade. 지시문 동작에 대한 자세한 내용은 Nginx 프록시 모듈 참조를 확인하세요 . 모든 검사를 통과하면 테스트 문서를 열고, 편집하고, 저장한 후 다시 열어 새 경로를 사용자에게 제공하기 전에 검토하세요.Connection

댓글 남기기

Collabora Online을 ownCloud Infinite Scale에 연결하세요.

Collabora Online을 ownCloud Infinite Scale에 연결하세요.

Collabora Online과 ownCloud Infinite Scale 간의 WOPI 연결을 설정하고, 올바른 서비스 URL을 구성하고, 문서 편집 내용이 저장되는지 확인합니다.

WOPI를 통한 Collabora CODE의 블록 파일 내보내기

WOPI를 통한 Collabora CODE의 블록 파일 내보내기

Collabora Online CODE에서 문서 내보내기를 방지하려면 WOPI DisableExport 권한을 설정한 다음 호스트와 편집기에서 해당 권한이 적용되는지 확인하십시오.

WebSocket 연결을 깨뜨리지 않고 Collabora를 Nginx 뒤에 설치하는 방법

WebSocket 연결을 깨뜨리지 않고 Collabora를 Nginx 뒤에 설치하는 방법

Nginx TLS 종료, Collabora 라우팅 및 WebSocket 헤더를 구성한 다음 실제 문서를 열기 전에 공개 엔드포인트를 테스트하십시오.

코드 편집 세션이 10분에서 종료되는 것을 막으세요

코드 편집 세션이 10분에서 종료되는 것을 막으세요

10분 동안 지속되는 CODE 연결 끊김 현상을 프록시, 로드 밸런서 또는 WebSocket 경로에서 추적한 다음, 타임아웃을 수정하고 세션 연결이 유지되는지 확인합니다.

Helm을 사용하여 Kubernetes에 Collabora CODE 배포하기

Helm을 사용하여 Kubernetes에 Collabora CODE 배포하기

Collabora 공식 Helm 차트를 설치하고, WOPI 액세스 및 인그레스 선호도를 구성하고, 일반적인 설정 오류 없이 배포를 확인합니다.

Collabora 빈 문서의 오류 발생 원인을 추적합니다.

Collabora 빈 문서의 오류 발생 원인을 추적합니다.

Collabora에서 빈 문서가 열리는 이유를 찾으려면 브라우저 요청, WOPI 로그 및 대상 프록시 검사를 사용하고, 증거에 맞는 해결책을 선택하십시오.

Collabora Online에서 다국어 맞춤법 검사 활성화 코드

Collabora Online에서 다국어 맞춤법 검사 활성화 코드

CODE Docker 사전을 구성하고 문서 구절에 올바르게 태그를 지정하여 영어, 프랑스어 및 기타 지원되는 언어에 대해 올바른 맞춤법 검사가 적용되도록 하십시오.

Collabora의 활성 문서 보기용 유휴 타이머 설정

Collabora의 활성 문서 보기용 유휴 타이머 설정

coolwsd에서 보기별 비활성 임계값을 조정하고, 이를 배경 탭 밝기 조절, 문서 언로드, 자동 저장 및 로그인 만료와 구분합니다.

Collabora CODE 업데이트 확인 및 원치 않는 연결 비활성화

Collabora CODE 업데이트 확인 및 원치 않는 연결 비활성화

예약된 CODE 업데이트 확인을 중지하고, 선택적 원격 서비스를 검토하고, 문서 편집을 중단하지 않고 아웃바운드 네트워크 제어를 사용하십시오.

Seafile과 Collabora를 올바른 WOPI URL로 연결하세요

Seafile과 Collabora를 올바른 WOPI URL로 연결하세요

Seafile에서 안전한 문서 편집을 활성화하려면 Collabora의 검색 URL, HTTPS 및 WOPI 액세스를 배포 환경에 맞게 구성하십시오.