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


15

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

以下に、myexample.comのnginx構成ファイルの内容を示します/etc/nginx/sites-available

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)

ここここ、およびここ(特に)で提案とドキュメントを試しましたが、常にERR_CONNECTION_REFUSEDエラーが発生します。

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

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

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


1
「非標準のポートを使用し、そのポートをURLに明示的に入力できることに注意する必要があります(例:myexample.com : 9443)」私は「のようななめらかを使用して私のウェブサイトにアクセスしたいので、これを行うにはできたか説明していただけますmyexample.com:9443含まSSLと」
Ghassanゼイン

回答:


22

サポートタイピング「するためにhttps://myexample.comお使いのブラウザで」、そしてそれがで扱う持つnginxポート9443上の設定リスニング、追加の必要があります。nginxそれはへのIPポートであるため、まだ、ポート443で待機する設定をブラウザが接続します。

したがって:

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ホスト名に結び付けられますが、必ずしもポートに結び付けられるわけではないため、両方のセクションに同じ証明書/キーが必要であることに注意してください。

お役に立てれば!


これが最も完全な答えですが、あなたが私に言っていることは、セキュアな接続に自動的にリダイレクトするために、nginxはまだポート443にバインドされなければならないということです。これは本当ですか?それが問題です:-(そのポートにバインドされた別のプロセスがあります。
GojiraDeMonstah

Nginxはリバースプロキシです。443でリッスンして、要求を適切なアプリケーションに渡すことができます。
ティム

ティム-あなたは正しい。たぶん本当の愚かな質問をしましたが、SSLポートを「魔法のように」変更する方法があればいいのにと思っていました。
GojiraDeMonstah

@GojiraDeMonstahポート443を使用したくない場合は、選択したポート番号をURLに入れます。以上です。
マイケルハンプトン

「ssl」は非常に重要でした。以前default_serverを持っていて、かなりの期間それで苦労しました。
swateek

0

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

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


-1

ポートを9443などの非標準ポートに変更する場合は、443から9443へのリダイレクトを追加する必要があります。nginxをそのポートへのリバースプロキシに設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.