web-dev-qa-db-ja.com

proxy_passを使用したnginxでのSSLの構成

ポート80で完全に正常に機能するpython/gunicornベースのサイトでSSLを機能させるのに問題があります。proxy_passを使用してトラフィックをアップストリームに送信しています。

これまでに完了した手順

  1. /etc/sslにnginxを含むマシンにコピーされた他のApacheサイトで動作する、インコモンのワイルドカード証明書バンドル。バンドル内の3つのファイルは、domain.crtdomain.keyincommon.crtです。
  2. domain.chain.crtを使用してcat domain.crt incommon.crt > domain.chain.crtというチェーン証明書を作成しました
  3. 4つのファイルすべてに775権限と私のsites-available構成と同じ所有権を設定します。
  4. sites-availableの下に次の構成を作成しました:

    server { 
       listen 80;
       server_name <subdom.domainname.com>;
       location / {
          include proxy_params;
          proxy_pass https://unix:/var/www/developmentfolder/sandbox.sock;
          proxy_ssl_certificate /etc/ssl/domain.chain.crt;
          proxy_ssl_certificate_key /etc/ssl/domain.key;
       }
    }
    

問題

現在、80または443でサイトにアクセスできません。nginxのエラーログには何も表示されず、gunicornのログファイルも表示されません。 Nginxの構文チェックは毎回パスします。ここで間違っていることはありますか?

Nginxバージョンは1.10.3です

1
wellwellwell

あなたは物事を間違った方法で行っています。 httpsを機能させたいが、httpsプロトコルを介してローカルソケットを使用するようにポート80を構成するとします。それができるかどうかさえわかりませんが、ファイルベースのUNIXドメインソケットを介してnginxとgunicorn間の接続を暗号化することで実現できます。ブラウザとWebサーバー間の接続には何もしません。

あなたがしたいすべてがhttps経由であなたのサイトを利用可能にすることであるなら、なぜ 公式ガイド に従って、それが機能したらもっと複雑なことをしないのですか?.

これが機能していて、Webサーバーとgunicornの間の接続を暗号化することに真剣に取り組んでいる場合は、UNIXドメインソケットは使用せず、 SSL構成 およびHTTPS接続を使用します。

2
Melvyn