自己署名証明書を使用してNGINXをバックエンドサーバーにリバースプロキシする方法は?

自己署名証明書を使用してNGINXをバックエンドサーバーにリバースプロキシする方法は?

私はWebサーバーとOpenVPNアクセスサーバー(独自のWebインターフェースを含む)を備えた小規模ネットワークを持っています。パブリックIPが1つだけで、サブドメインをWebサーバー(例:website1.domain.com、website2.domain.com)のWebサイトにポイントし、サブドメインvpn.domain.comをWebインターフェースサーバーにポイントしたいと思います。 OpenVPNアクセス用。

インターネット検索の最後に最善の方法は、プロキシサーバーを設定することでした。 NGINXは「proxy_pass」機能でこれを行うことができるようです。 HTTPバックエンドURL(Webサイト)で動作するようにしましたが、HTTPSを強制するため、OpenVPNアクセスサーバーのWebインターフェイスでは機能しません。私はHTTPSに満足しており、WebサーバーでホストされているWebサイトにHTTPSを好みます。デフォルトは自己署名証明書です。すでにインストールされているので、自己署名証明書も使用したいと思います。他のウェブサイトの場合。

自己署名証明書をどのように「受け入れる」のですか?バックエンドサーバーの場合?証明書を生成する必要があることがわかりました。 NGINXリバースプロキシ設定でこれを定義しますが、これがどのように機能するかを理解していません。たとえば、OpenVPNサーバーにはすでにSSL証明書がインストールされています。以下からOpenVPN Webインターフェイスにアクセスできます。https://direct.ip.address.here/adminしかし、Chromeを介してWebインターフェイスにアクセスしようとすると、「このサイトは安全な接続を提供できません」ページが表示されます。

私のNGINXリバースプロキシ設定:

server {
  listen        443;
  server_name   vpn.domain.com;

  ssl_verify_client off;

  location / {
    # app1 reverse proxy follow
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://10.128.20.5:443;
    proxy_ssl_verify off;
  }

  access_log /var/log/nginx/access_log.log;
  error_log /var/log/nginx/access_log.log;
}

server {
  listen        80;
  server_name   website1.domain.com;

  location / {
    # app1 reverse proxy follow
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://10.128.11.20:80;
  }

  access_log /var/log/nginx/access_log.log;
  error_log /var/log/nginx/access_log.log;
}


近くにアイデアがあります... おそらくNGINXは(現在または長期的に)正しいツールではないかもしれません。証明書を回復できるとします。現在経験している問題は、トラフィックを処理するためにより多くのバックエンドWebサーバーが必要であることです。 NGINXプロキシも拡張できますか?クラスターやロードバランサーが好きですか?まったく異なるツールを見つける必要がありますか?

答え1

443 サーバーブロックが SSL 要求に対して構成されていません。ディレクティブsslに追加して構成する必要があります。listenssl_certificatessl_certificate_key

例えば

server {
  listen        443 ssl;
  ssl_certificate /path/to/ssl/certificate.pem;
  ssl_certificate_key /path/to/ssl/certificate.key;
# ...

これらの設定やその他のTLS / SSL関連設定の詳細については、こちらをご覧ください。http://nginx.org/en/docs/http/configuring_https_servers.html

現在経験している問題は、トラフィックを処理するためにより多くのバックエンドWebサーバーが必要であることです。 NGINXプロキシも拡張できますか?

NGINXは垂直方向にうまく拡張されます(サーバーのリソースの増加)。水平方向のスケーラビリティまたは高可用性のために、より多くのNGINXサーバーを追加し、パブリックIPアドレスが1つしかない場合は、管理VIP(仮想IP)が必要です。このkeepalivedサービスを使用してVIPを管理できます。しかし、小規模ネットワークの場合、これは必要ないと思います。

関連情報