HTTP経由で複数のnodejsWebアプリケーションサーバーがあり、それらのサーバーに送信されたリクエストを認証する必要があります。 nginxをリクエストのプロキシとして使用し、SSL証明書でnginxサーバーのみを認証して、クライアントに返送されるデータ/画像がHTTPS経由で提供されるようにすることを考えていました。
これは私が考えた構造です:
+--- app1 ---> node.js on ip:10001
|
client --> https --> nginx --> http --- app2 ---> node.js on ip:10002
|
+--- app3 ---> node.js on ip:10003
私の懸念は、プロキシされたリクエストからの応答オブジェクトについてです。 WebkitベースのブラウザとSafariは、アプリケーションがHTTPSであるが、HTTP経由でコンテンツを提供していることを警告しています(混合コンテンツ警告)。
プロキシサーバーを認証することにより、クライアントへの応答はHTTPSまたはHTTPとして検証されますか?
私のnginxプロキシにはproxy.domain.comのような認定されたサブドメインがあるため、例として「 https ://proxy.domain.com:10001 "。要求はHTTPSを介してプロキシに対して実行されますが、返されるサーバーコンテンツはHTTPを介して行われます。プロキシはそのような返されたコンテンツをどのように制定しますか?
SSL暗号化を適用するので、次のようにリソースを送り返します: " https://proxy.domain.com:10001/resource.png "
みなさん、よろしくお願いします
あなたが試みているものはSSLターミネーションと呼ばれています。リバースプロキシがSSLを処理し、HTTPプロトコルを使用してプロキシサーバーに要求を転送するときです。したがって、クライアントにはHTTPS接続がありますが、リバースプロキシ(nginx)からプロキシサーバー(Apache)へのHTTP接続があります。 nginxでは次のようにします:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.chained.crt;
ssl_certificate_key www.example.com.key;
location /{
proxy_pass http://upstream_name:80;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
}
}
さらに詳しく知りたい場合は、Nginxのこの公式ドキュメントを使用できます https://www.nginx.com/resources/admin-guide/nginx-ssl-termination/ 。混合コンテンツについては、@ Bertと同じだと思います。 HTMLでまだhttpプロトコルを提供していることが原因かもしれません。