ンジンエックス
概要
情報システム部門に所属している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 build
Nginxを起動
sudo /usr/local/nginx/sbin/nginx
curlでIndex.htmlが取得できる
curl --http2 localhost
別解
viなどのエディタでnginx.confを以下のように編集
listen 443 http2 -> listen 80
Nginxを起動
sudo /usr/local/nginx/sbin/nginx
curlでIndex.htmlが取得できる
curl --http2 localhost