リモート Web サーバーを介してローカル Web サーバーを公開したいと考えています。リモート ホストにはすでに Nginx と Web アプリケーション (Web メール) があります。リモート サーバーは、ポート 80 をリモートの 8080 に転送するローカル Web サーバーのゲートウェイとして機能します。これは機能しています。
ここで、サブドメイン (例: bridge.mydomain.co) のリクエストを転送先のポートに転送したいと思います。次のようにして試しました:
server {
listen 80;
listen [::]:80;
server_name bridge.mydomain.co;
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ローカル Web サーバーは複雑な PHP アプリケーションを実行しているため、次のようなエラーが発生します。
次のような 40 件のエラー:
スタイルシート '' は、次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、読み込みを拒否されました: "default-src https: data: 'unsafe-inline' 'unsafe-eval'。'style-src-elem' が明示的に設定されていないため、'default-src' がフォールバックとして使用されることに注意してください。
および 56 の:
スクリプト '' は、次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、読み込みを拒否されました: "default-src https: data: 'unsafe-inline' 'unsafe-eval'"。'script-src-elem' が明示的に設定されていないため、'default-src' がフォールバックとして使用されることに注意してください。
転送されたポートを直接公開できることはわかっています。これは問題なく動作します。ただし、TLS 終了と転送には (最終的には) nginx を使用したいと考えています。
この問題について読むと、PHP のローカル Web サーバーがリクエストを拒否しているようです。しかし、修正方法がわかりません。
何か助けて?
答え1
最後に理解してください。次のヘッダーを渡す/追加する必要がありました。
server {
listen 80;
listen [::]:80;
server_name bridge.mydomain.co;
proxy_pass_header server;
location / {
proxy_set_header Host $host;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://bridge.mydomain.co http://bridge.mydomain.co:8080 http://bridge.mydomain.co/core/img/favicon-touch.png; img-src 'self' http://bridge.mydomain.co http://bridge.mydomain.co:8080;";
proxy_pass http://bridge.mydomain.co:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ポート バージョンは必要なく、「デフォルト」でカバーされるいくつかのヘッダーが欠落していると思います。したがって、改善の余地があります。
説明を読みたい場合は、私よりも知識のある人からの資料がここにあります:https://stackoverflow.com/questions/33300111/how-to-override-content-security-policy-of-site-a-while-using-nginx-proxy-pass-o