こんにちは
Discourse を、設定された公開ドメイン名を経由せずにテストしたいと考えています。例えば、Discourse が https://uat.mysite.com としてインストールおよび設定されている場合、ブラウザで https://uat.mysite.com を開くことができます。これにより、ブラウザは内部ネットワークからパブリックインターネットに出てドメイン名をパブリック IP アドレスに解決し、パブリック IP アドレス経由でページを読み込みます。
サーバーの内部 IP アドレス(例:以下の 192.168.1.2)で Discourse にアクセスしようとしましたが、当然ながら Content Security Policy のために読み込めませんでした。エラーは以下の形式で表示されます。
スクリプト 'http://192.168.1.2:12000/assets/locales/en-a9c88e45eb548bd7c807aecfd37d218891e213b5c1fd254857e0f16c72d73996.js' の読み込みが拒否されました。これは、以下の Content Security Policy ディレクティブに違反しているためです: "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='". 'script-src-elem' が明示的に設定されていないため、'script-src' がフォールバックとして使用されていることに注意してください。
--------------------------------------------
| |
------------
uat.mysite.com は 98.1.2.3 に解決されます --> | パブリック IP | Discourse が実行されているサーバー。 |
| 96.1.2.3. |\
------------ |
| |
| ---------------- |
| | プライベート IP | |
| | 192.168.1.2 | |
--------------------------------------------
^
|
192.168.1.2 ------------------------------------------------------------
サーバーの内部 IP アドレスから Discourse にアクセスしたい理由は、テストを行いたいからです。例えば、ネットワークがインターネットに接続されている必要がないテストを行いたい場合などです。または、DNS を設定せずにラップトップやビルドサーバーにテストインスタンスをインストールしたい場合などです。
/etc/hosts にカスタムエントリを設定することでこれを上書きできると思いますが、CSP を無効にするか、テストを許可するために他のソースを信頼するように設定する方法はありますか?