web-dev-qa-db-ja.com

非標準ポートでnginx SSLを実行する方法

これは少なくとも他のいくつかの質問の重複のように見えますが、私はそれらをそれぞれ数回読んだにもかかわらず、まだ何か間違ったことをしています。

以下は、/etc/nginx/sites-availableにあるmymy.com nginx設定ファイルの内容です。

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

https://myexample.com にアクセスすると、コンテンツが提供され、接続は安全です。したがって、この構成は良いようです。

ここで、sslポートを9443に変更してnginx構成を再ロードすると、構成はエラーなしで再ロードされますが、 https://myexample.com にアクセスすると、ブラウザにエラーが表示されます(このサイトは到達した/ myexample.comが接続を拒否したERR_CONNECTION_REFUSED)

私は提案とドキュメント herehere 、および here (その他)を試しましたが、常にERR_CONNECTION_REFUSEDエラーが発生します。

非標準のポートを使用して、そのポートを明示的にURLに入力できることに注意してください(例: https://myexample.com:944 )。しかし、私はそれをしたくありません。私が欲しいのは、ユーザーがmyexample.comを任意のブラウザに入力して、nginxに安全な接続に自動的にリダイレクトさせることです。

繰り返しますが、標準の443 SSLポートを使用しても問題は発生しません。

編集:私はnbianx/1.6.2をdebian/jessieで使用しています

16
GojiraDeMonstah

ブラウザでの「 https://myexample.com 」の入力をサポートするために、andポート9443でリッスンしているnginx構成によって処理されるようにします。 ポート443でリッスンする追加のnginx configが必要です。これは、ブラウザが接続するIPポートであるためです

したがって:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

証明書は通常 DNSホスト名に関連付けられていますが、必ずしもポートではないため、両方のセクションに同じ証明書/キーが必要であることに注意してください。

お役に立てれば!

23
Castaglia

https://example.com と入力すると、https://スキームの標準はポート443に接続することになります。この場合、サーバーを移動してポートでリッスンするようにしました9443. 接続が拒否されました メッセージが表示されるため、ポート443で何も待機していません。

接続をポート9443にリダイレクトするポート443でリッスンするか、URLの一部としてポートを使用するように調整する必要があります。

0
user9517