過去問ドリル

LinuCレベル2 Webサーバーとプロキシサーバー 問34

Webサーバーとプロキシサーバー/nginxの設定と管理

nginxのserverブロックに「listen 443;」と書き、ssl_certificateとssl_certificate_keyでサーバー証明書と秘密鍵を指定した。ところが、ブラウザからhttps://で接続するとTLSのエラーになり、443番ポートでは暗号化されていないHTTPが応答している。listenの行の書き方として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル2の出題範囲「Webサーバーとプロキシサーバー」に対応。実際の試験問題ではありません)

正解:B

解説

nginxでは、listenディレクティブにsslパラメータを付けたポートだけがTLSで接続を受け付けます。ssl_certificateやssl_certificate_keyを書いても、listenにsslが無ければそのポートは通常のHTTPとして動作します。古い設定で見られる「ssl on;」ディレクティブは1.15.0で非推奨になり、1.25.1で削除されており、現在はlistenのsslパラメータを使います。HTTPとHTTPSを1つのserverブロックで扱う場合は、listen 80; と listen 443 ssl; を並べて書けます。

選択肢ごとの解説

  • A誤り。default_serverは、Hostヘッダーに一致するserver_nameが無いときに使う既定のserverブロックを指定するパラメータです。
  • B正しい。sslパラメータを付けると、そのポートでTLSによる接続を受け付けます。
  • C誤り。proxy_protocolは、前段のロードバランサ等から送られるPROXYプロトコルのヘッダーを受け付けるためのパラメータです。
  • D誤り。reuseportは、ワーカープロセスごとに個別の待ち受けソケットを作らせるためのパラメータです。
LinuCレベル2の問題を演習モードで解く