리버스 프록시
사용자는 요청을 Immich로 전달하는 맞춤형 리버스 프록시를 배포할 수 있습니다. 이를 통해 리버스 프록시는 TLS 종료, 로드 밸런싱 또는 기타 고급 기능을 처리할 수 있 습니다. Immich와 사용자 사이의 모든 리버스 프록시는 모든 헤더를 전달하고 Host
, X-Real-IP
, X-Forwarded-Proto
, X-Forwarded-For
헤더를 적절한 값으로 설정해야 합니다. 추가적으로, 리버스 프록시가 충분히 큰 업로드를 허용해야 합니다. 이러한 관행을 따르면 모든 맞춤형 리버스 프록시가 Immich와 완벽히 호환될 수 있습니다.
복구 페이지 로드에 시간이 오래 걸릴 수 있습니다. 서버 타임아웃 또는 오류를 방지하려면 프록시 서버에서 최소 10분의 타임아웃을 지정하는 것을 권장합니다.
Immich는 location /immich {
과 같은 하위 경로에서 제공되는 것을 지원하지 않습니다. 도메인 또는 서브도메인의 루트 경로에서 제공되어야 합니다.
Nginx 예제 설정
아래는 nginx의 예제 설정입니다. public_url
을 인스턴스의 외부 URL로 설정하고, backend_url
을 Immich 서버 경로로 설정하세요.
server {
server_name <public_url>;
# 큰 파일 업로드 허용
client_max_body_size 50000M;
# 헤더 설정
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;
# 웹소켓 활성화: http://nginx.org/en/docs/http/websocket.html
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
# 타임아웃 설정
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
location / {
proxy_pass http://<backend_url>:2283;
}
}
Let's Encrypt와의 호환성
nginx 설정에 Let's Encrypt 섹션이 포함된 경우, 다음과 유사한 세그먼트를 포함하고 있을 가능성이 높습니다:
location ~ /.well-known {
...
}
이 특정 location
지시문은 발견 과정에서 중요한 /.well-known/immich
경로에 대한 모바일 클라이언트의 접근을 방지할 수 있습니다. 이 경우의 일반적인 오류 메시지는 다음과 같습니다: "앱 주요 버전이 서버와 호환되지 않습니다." 이를 해결하려면 Immich 서버로 요청이 올바르게 전달되도록 이 경로에 대해 추가적인 location 블록을 도입해야 합니다:
location = /.well-known/immich {
proxy_pass http://<backend_url>:2283;
}
이를 통해 Let's Encrypt의 기능을 유지하면서 모바일 클라이언트가 필요한 Immich 경로에 접근하는 데 문제가 없도록 할 수 있습니다.