안녕하세요
설정된 공용 도메인 이름을 거치지 않고 Discourse를 테스트해 보고 싶습니다. 예를 들어, Discourse가 https://uat.mysite.com으로 설치 및 구성되었다면, 브라우저에서 https://uat.mysite.com으로 이동할 수 있습니다. 이렇게 하면 브라우저가 내부 네트워크를 벗어나 공용 인터넷으로 나가 도메인 이름을 공용 IP 주소로 해석하고, 해당 공용 IP 주소를 통해 페이지를 로드하게 됩니다.
방금 서버의 내부 IP 주소(아래에 표시된 192.168.1.2 등)를 통해 Discourse에 접속을 시도해 보았지만, Content Security Policy(CSP) 때문에 당연히 로드가 되지 않습니다. 발생하는 오류는 다음과 같은 형태입니다.
Refused to load the script 'http://192.168.1.2:12000/assets/locales/en-a9c88e45eb548bd7c807aecfd37d218891e213b5c1fd254857e0f16c72d73996.js' because it violates the following Content Security Policy directive: "script-src http://uat.mysite.com/logs/ http://uat.mysite.com/sidekiq/ http://uat.mysite.com/mini-profiler-resources/ http://uat.mysite.com/assets/ http://uat.mysite.com/brotli_asset/ http://uat.mysite.com/extra-locales/ http://uat.mysite.com/highlight-js/ http://uat.mysite.com/javascripts/ http://uat.mysite.com/plugins/ http://uat.mysite.com/theme-javascripts/ http://uat.mysite.com/svg-sprite/ 'sha256-rwfDVOTzygQmkOwFNAeX564B66beHoel4+gRLgQUgHg='". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
---------------------------------------------
| |
------------
uat.mysite.com resolves to 98.1.2.3 --> | Public IP | Server running Discourse. |
| 96.1.2.3. |
------------ |
| |
| ---------------- |
| | Private IP | |
| | 192.168.1.2 | |
---------------------------------------------
^
|
192.168.1.2 ------------------------------------------------------------
서버의 내부 IP를 통해 Discourse에 접근하고 싶은 이유는 테스트를 수행하기 위해서입니다. 예를 들어, 부하 테스트를 수행할 때 인터넷을 서비스하는 네트워크에 불필요한 부하를 걸고 싶지 않을 수 있습니다. 또는 DNS를 설정하지 않고 노트북이나 빌드 서버에 테스트 인스턴스를 설치하고 싶을 수도 있습니다.
항상 /etc/hosts에 사용자 지정 항목을 설정하여 이 문제를 우회할 수 있다고 생각합니다만, CSP를 비활성화하거나 테스트를 허용하기 위해 다른 소스를 신뢰하도록 설정하는 방법이 있을까요?