サブドメインを使用して NGINX 経由で HTTP (または TCP) リクエストを特定のポートに転送する

サブドメインを使用して NGINX 経由で HTTP (または TCP) リクエストを特定のポートに転送する

リモート 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

関連情報