メニュー

1-4 Nginxの初期設定

他のパッケージを導入してからのNginxの設定は、追々行なうものとする。

systemctl status nginx -l

上記コマンドはNginxのステータスを確認するときに使用する。

設定ファイルを確認する

設定ファイルの管理方法は各環境ごとに合わせるが、私の場合は「/etc/nginx/nginx.conf」にはあまり追加の記述を入れないようにしている。

ただし以下の条件では「/etc/nginx/nginx.conf」を編集している。

  • 「/etc/nginx/nginx.conf」の既存設定をコメントアウトする
  • 「/etc/nginx/nginx.conf」の既存設定のルールを変更する
  • 追加の設定ファイルを読み込む

nginx.confの設定

mainコンテキスト(全体設定)の設定

worker_processesはworker_processes 1;のようにworkerのプロセス数を指定できる。
性能を出したい場合は、コア数と同数のworkerを起動するようにする。
→今回はworker_processes auto;に設定。

error_log /var/log/nginx/error.log notice;だとエラー量が多いので、error_log /var/log/nginx/error.log warn;に変更。

eventsコンテキストの設定

worker_connections 1024;

1workerのプロセスの同時接続数。1回のアクセスで1つの接続を使う。
ただしリバースプロキシとしてNginxを動作させると、アクセスがあったときにバックエンドのサーバーとも通信するため、1回のアクセスで2つの接続を使う。

セキュリティ対策

Nginxのバージョンを非表示にする

デフォルトだと、ブラウザのデベロッパーツールやcurlからNginxのバージョンを確認できてしまうので、Nginxに設定を加えてバージョンを非表示にする。

まずはじめに、curlからバージョンが確認できるかどうかを実際に試す。

curl -I <URL>

HEADを確認すると「Server: nginx/1.22.1」とのようバージョンが露呈されていた。

Nginxのバージョンを非表示にするため、Nginxの設定ファイルのhttpブロックに「server_tokens off;」を追加する。

http {
    server_tokens       off;

「include /etc/nginx/conf.d/*.conf;」について

nginx.confのhttpブロックの中に「include /etc/nginx/conf.d/*.conf;」と入っている。
「/etc/nginx/conf.d/*.conf」にあるconfファイルから、httpブロックに対する設定ファイルを登録できる。

「/etc/nginx/conf.d/*.conf」のファイルからhttpブロックを登録すると以下のようなエラーが出るので、httpでラップする必要は無し。

ディレクトリリスティング攻撃対策

アクセス先にインデックスファイルがないとファイル一覧が表示される。アップロードした非公開ファイルをうっかり覗き見られてしまうリスクがあるので、意図していない場合は非表示にした方がいい。

autoindex off;

Apacheでいう「Options -Indexes」。httpブロックの中で設定できるので、「/etc/nginx/conf.d」内の設定ファイルに記述しておく。

Nginxの設定反映

Nginxの設定が完了したら、Nginxの再起動を行なう。

再起動の前に構文チェックを行なう。

nginx -t

エラーがなければNginxを再起動する。

systemctl restart nginx