클라우드프론트를 구성하여 Mattermost 정적 에셋을 호스팅하는 방법
Mattermost의 정적 에셋을 클라우드프론트로 호스팅하면 팀의 지리적으로 분산된 구성원들에게 개선된 캐싱 성능과 더 짧은 로드 시간을 제공할 수 있습니다.
원하는 도메인을 사용하여 S3 버킷을 생성합니다. 이 예에서는
mattermost.example.com
입니다.S3 버킷에 정적 호스팅을 활성화합니다.
SiteURL이 하위 경로로 구성된 경우(예: https://example.com/company/mattermost), 업로드 전에 정적 에셋을 다시 작성해야 합니다. 다음 명령을 사용하여 지정된 하위 경로에 대한 에셋을 다시 작성할 수 있습니다:
mattermost config subpath --path /company/mattermost
Mattermost 배포에서
client
디렉터리를 S3에 업로드하고static
으로 이름을 변경합니다.client
디렉터리 내부에서 다음 AWS CLI 명령을 사용하여 모든 파일을 S3에 업로드할 수 있습니다. 파일은public-read
권한으로 공개적으로 읽기 가능해야 합니다.aws s3 cp --acl public-read --recursive . s3://static.spinmint.com/static/
Mattermost 앱 서버를 설정하고 원하는 도메인의 서브도메인을 직접 앱 서버로 연결하는 레코드를 만듭니다. 이것은 클라우드프론트를 우회하여 웹소켓을 연결하기 위한 것입니다. 이 예에서는 도메인을
ws.mattermost.example.com
으로 사용합니다. 여러 개의 앱 서버가 있는 경우이 도메인은 ALB나 NGINX와 같은 로드 밸런서/프록시를 가리켜야 합니다.다음 구성으로 Web 클라우드프론트 분산을 만듭니다.
Origin Domain Name을 위에서 생성한 S3 버킷으로 설정합니다.
(권장 사항) Viewer Protocol Policy의 Redirect HTTP를
HTTPS
로 설정합니다.허용된 HTTP 메소드를
GET, HEAD, OPTIONS, POST, PATCH, DELETE
로 설정합니다.Forward Cookies를
All
로 설정합니다.Query string forwarding 및 Caching을
Forward all, cache based on all
로 설정합니다.Mattermost에 액세스하고자 하는 도메인을 대체 도메인 이름으로 설정합니다. 예:
mattermost.example.com
.Custom SSL Certificate
를 선택하고 도메인에 대한 인증서를 설정합니다.Default Root Object를
/static/root.html
로 설정합니다.
분산을 만든 후에는 추가 origin을 추가해야 합니다. origin 탭을 선택하고 origin을 만듭니다. origin 도메인 이름을 Mattermost 로드 밸런서로 설정합니다.
다음으로 behavior를 생성합니다.
Path Pattern을
/api/*
로 설정합니다.origin을 Mattermost 앱 서버 또는 로드 밸런서로 설정합니다.
허용된 HTTP 메소드를
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
로 설정합니다.Forward Cookies를 `All`로 설정합니다.
Query string forwarding 및 Caching을
Forward all, cache based on all
로 설정합니다.
다음으로, 오류 페이지 탭에서 사용자 정의 오류 응답을 설정합니다.
HTTP 오류 코드를
403
으로 설정합니다.Customize Error Response를
Yes
로 설정합니다.응답 페이지 경로를
/static/root.html
로 설정합니다.HTTP 응답 코드를
200
으로 설정합니다.HTTP 오류 코드 404에 대해 위의 단계를 반복합니다.
이제 Mattermost가 제공되는 도메인을 클라우드프론트 분산에 가리키도록 설정할 수 있습니다. 이 도메인을 설정하는 것은 이 안내서의 범위를 벗어납니다.
마지막으로, 다음과 같이 Mattermost의
config.json
설정을 설정합니다:SiteURL:
https://mattermost.example.com
WebsocketURL:
wss://ws.mattermost.example.com
AllowCorsFrom:
https://mattermost.example.com
AllowCookiesForSubdomains:
true
업그레이드 참고 사항
Mattermost 앱 서버를 업그레이드할 때는 새 클라이언트를 S3 버킷에 다시 업로드해야 합니다(위의 단계 3 및 4 참조).
또한 /static/root.html
에 대해 클라우드프론트 무효화를 실행해야 합니다. 이것은 무효화 탭 아래의 콘솔에서 수행할 수 있습니다.