2.4.0.beta9에서 2.4.0.beta10으로 업데이트 후 콘텐츠가 없는 페이지 표시 - Cloudflare Rocket Loader

오늘 아침에 원클릭 브라우저 업그레이드 이메일 알림을 받았고, 평소처럼 진행했습니다. 완료 후 포럼으로 돌아갔더니, 예상대로 배경과 헤더 이미지는 표시되지만 다른 콘텐츠는 전혀 없는 빈 페이지만 표시됩니다.

/var/discourse로 이동하여 ./launcher rebuild app을 실행하면 정상적으로 동작하지만, 포럼 사이트는 여전히 동일한 현상(헤더 이미지 + 배경만 표시되고 콘텐츠 없음)을 보입니다.

도움 부탁드립니다.

소스를 확인하면, 적어도 일부 콘텐츠는 존재하는 것 같습니다… 다만 표시되지 않을 뿐입니다. 2.4.0.beta9와 현재 빌드 사이에 해당 콘텐츠에 대한 변경 사항은 없습니다.

브라우저 콘솔에 오류가 있나요? (우클릭 → 요소 검사 → 콘솔 탭으로 이동)

예:

다음 Content Security Policy 지시사항을 위반했기 때문에 스크립트 'https://ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js’의 로딩이 거부되었습니다: “script-src ‘report-sample’ https://forums.stillwellaudio.com/logs/ https://forums.stillwellaudio.com/sidekiq/ https://forums.stillwellaudio.com/mini-profiler-resources/ https://forums.stillwellaudio.com/assets/ https://forums.stillwellaudio.com/brotli_asset/ https://forums.stillwellaudio.com/extra-locales/ https://forums.stillwellaudio.com/highlight-js/ https://forums.stillwellaudio.com/javascripts/ https://forums.stillwellaudio.com/plugins/ https://forums.stillwellaudio.com/theme-javascripts/ https://forums.stillwellaudio.com/svg-sprite/ https://www.google-analytics.com/analytics.js”. 'script-src-elem’이 명시적으로 설정되지 않았으므로 'script-src’가 폴백으로 사용됩니다.

20 리소스 은 link preload를 사용하여 미리 로드되었지만, window의 load 이벤트 후 몇 초 이내에 사용되지 않았습니다. 적절한 as 값이 있는지, 그리고 의도적으로 미리 로드되었는지 확인하십시오.

클라우드플레어의 자바스크립트 ‘최적화’ 기능은 디스코urs 사이트에서 정기적으로 문제를 일으킵니다. 클라우드플레어 계정에 로그인하여 포럼 도메인을 '오렌지 클라우드’에서 '그레이 클라우드’로 변경해야 합니다.

수정하기 쉬운 문제네요. 감사합니다. Cloudflare의 DDoS 보호와 IP 주소 숨김 기능을 우회하게 되니 좀 아쉽지만, 그렇게 바꾸니 실제로 작동하더라고요. Cloudflare 지원팀에 이 문제를 보고하겠습니다.

Cloudflare가 자동으로 해결할 수 있는 부분이 많지 않을 것 같습니다. CSP에서 Rocket Loader를 허용하는 방법이 있습니다. 하지만 Discourse의 JavaScript는 이미 충분히 최적화되어 있어 Rocket Loader는 필요하지 않습니다.

Cloudflare 설정으로 들어가면 Rocket Loader를 개별적으로 비활성화할 수 있습니다. 그런 다음 프록시를 다시 활성화하면 CSP 오류가 사라져야 합니다.

대부분의 사용자에게는 Cloudflare를 완전히 비활성화하는 것이 더 쉽지만, DDoS 보호가 정말 필요하다면 다음 설명에 따라 설정할 수 있습니다: Full site CDN acceleration for Discourse

확인: Rocket Loader를 비활성화하고 프록시를 다시 활성화하면 이 방법도 정상적으로 작동합니다. 좋은 절충안이었네요, 감사합니다!

정리하자면, 오렌지 클라우드를 꺼야 하는 것은 아닙니다. 사이트 전체에 대해 “성능 비활성화” 페이지 규칙을 적용하면서 오렌지 클라우드는 켜둔 상태로 두어도 됩니다.

DDoS 보호 기능은 최적화 기능과 연결되어 있지 않기 때문입니다.

다만, 오렌지 클라우드를 켜두면 모든 요청이 느려집니다. 따라서 DDoS 보호가 정말 필요하거나 클라우드플레어의 CDN을 사용하려는 경우가 아니라면, 꺼두는 것이 더 좋습니다.

저는 Cloudflare의 Argo 스마트 라우팅과 기타 성능 기능을 사용하는데, 일반적으로 성능이 눈에 띄게 향상됩니다… 주로 해당 도메인의 메인 웹사이트에서 그렇고 포럼보다는 메인 웹사이트에서 더 그렇습니다. 메인 웹사이트는 사람들이 제 제품을 구매할 수 있게 해주는 부분이니까요… 빠를수록 좋습니다. 어쨌든, 그 특정 최적화 기능(Rocket Loader)만 비활성화하면 프록시 뒤에 Discourse가 정상적으로 작동하므로, 그건 꽤 괜찮은 타협책입니다. 감사합니다!

2.4.0 beta 10로 업그레이드 후 유사한 문제가 발생했습니다

저는 https://www 버전과 https:// 버전(www 없음)을 모두 가지고 있습니다.

https://www 버전은 정상적으로 작동합니다.

https:// 버전은 Chrome과 Safari에서 빈 화면이 표시되고 콘솔에 많은 오류가 발생합니다.

다음 Content Security Policy 지시문을 위반했기 때문에 스크립트 ‘’ 로드 거부: “script-src ‘report-sample’ ”. 'script-src-elem’이 명시적으로 설정되지 않았으므로 'script-src’가 폴백으로 사용됩니다.

다음 Content Security Policy 지시문을 위반했기 때문에 스크립트 ‘https://dastereo.ru/assets/locales/ru-2fae24b4e1db72deb2076bee15794ed9e0a6814a5bf52d778e29c106812aaa6c.js’ 로드 거부: “script-src ‘report-sample’ https://www.dastereo.ru/logs/ https://www.dastereo.ru/sidekiq/ https://www.dastereo.ru/mini-profiler-resources/ https://www.dastereo.ru/assets/ https://www.dastereo.ru/brotli_asset/ https://www.dastereo.ru/extra-locales/ https://www.dastereo.ru/highlight-js/ https://www.dastereo.ru/javascripts/ https://www.dastereo.ru/plugins/ https://www.dastereo.ru/theme-javascripts/ https://www.dastereo.ru/svg-sprite/ https://www.google-analytics.com/analytics.js”. 'script-src-elem’이 명시적으로 설정되지 않았으므로 'script-src’가 폴백으로 사용됩니다

간단한 해결 방법이 있을까요?

두 도메인에서 동시에 사이트를 실행하는 것은 지원되지 않습니다. 이 특정 오류는 Content Security Policy를 비활성화하여 수정할 수 있지만, 그렇게 하지는 않는 것이 좋습니다.

가장 좋은 방법은 하나의 도메인을 다른 도메인으로 리디렉션하는 것입니다.