ンジンエックス
概要
情報システム部門に所属しているI君は業務で使用するためにNginxを構築したが、起動せず繋がらない。原因を究明して繋がるようにして欲しい。なおセキュリティご事情的に外部からはファイル等を取得できない環境である。
前提条件
- aptなどを使用して外部から新規でnginxをインストールすることは禁止されている
/etc/netplan/01-netcfg.yamlを変更してはならない/var/lib/apt/lists/以下を変更してはならない
初期状態
/usr/local/nginx/sbin/nginxしてもエラーが出て起動しない。
終了状態
サーバから
curl --http2 localhostを行いリソースが取得できる。
解説
この問題ではオプション無しでビルドされたNginxにhttp2に関するモジュールが存在していないためエラーが発生しhttp2を使いたいが、起動できないという問題でした。
問題環境内にビルドするためのファイル一式があるので、http2モジュールを含むオプションを行い実行することでnginx.confを変更することなく解くことが出来ました。また、終了条件を満たせていれば良いためnginx.confのhttp2を削除することでもcurlが通るためそれも満点としています。
想定解
Nginxを実行すると以下のエラーが確認できる。
sudo /usr/local/nginx/sbin/nginx
nginx: [emerg] the "http2" parameter requires ngx_http_v2_module in /usr/local/nginx/conf/nginx.conf:36ビルドする際にモジュールを導入しビルドする
cd ~/nginx-1.21.1
./confiure --with-http_v2_module
make
sudo make buildNginxを起動
sudo /usr/local/nginx/sbin/nginxcurlでIndex.htmlが取得できる
curl --http2 localhost別解
viなどのエディタでnginx.confを以下のように編集
listen 443 http2 -> listen 80Nginxを起動
sudo /usr/local/nginx/sbin/nginxcurlでIndex.htmlが取得できる
curl --http2 localhost