Webサーバ(nginx)の構築

この記事では、nginxによるWebサーバの構築方法を紹介します。

自宅サーバで構築できる各種サービスはweb経由でアクセスできるものが多数ありますので、各種サービスにアクセスできるようにwebサーバを構築して、自宅内LANからアクセスできるようにします。

なお、今回はArchLinuxにおけるnginxの設定になります。

1.nginxのインストール

サーバにて以下のコマンドでnginxをインストールします。

$ sudo pacman -S nginx-mainline

2.iptablesの設定

iptablesでTCP80、443番ポートへアクセスを許可します。

iptablesの具体的な設定方法は、以下の関連記事を参照ください。

関連記事→iptablesの設定

# LAN(192.168.10.0/24)からTCP80番ポートへのアクセス許可
iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 80 -j ACCEPT
# LAN(192.168.10.0/24)からTCP443番ポートへのアクセス許可
iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 443 -j ACCEPT

3.nginxサービスの開始

以下のコマンドでnginxサービスを有効にして、起動します。

$ sudo systemctrl enable nginx
$ sudo systemctrl start nginx

http://【サーバのIPアドレス】にアクセスするとnginxのデフォルトページが表示されます。

4.nginx.conf設定

以下のように/etc/nginx/nginx.confを編集します。
以下の編集で、IP直打ちの禁止とバーチャルホスト用の設定読み込みが可能となります。

#user html;
worker_processes auto;
worker_cpu_affinity auto;
worker_priority 0;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 80  default_server;
        server_name _;
        return 444;
    }

    include sites-enabled/*;

5.バーチャルホスト別設定

5-1.バーチャルホスト設定ファイル配置用のディレクトリ作成

以下のコマンドで Webサイト設定用のディレクトリを作成します。
今後は、sites-availableに設定ファイル実体を配置して、有効化する際は、sites-enabledに設定ファイルへのシンボリックリンクを張ります。
設定を無効化する場合は、シンボリックリンクを削除することで、容易に無効化できます。

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

5-2.sites-availableに設定ファイルの配置

nginxのデフォルトページの設定をwww.confとして保存します。
ここでは、ドメイン名をwww.mako-note.comとします。

server {
    listen 80;
    server_name www.mako-note.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

5-2.sites-availableの設定ファイルの有効化

以下のコマンドwww.confの設定を有効化します。

$ cd /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/www.conf .

6.dnsの設定

4.の設定でIPアドレスの直打ちを禁止しましたので、dnsで名前解決をしてアクセスするようにします。

dnsの具体的な設定方法は、以下の関連記事を参照ください。

関連記事→内部向けDNSサーバの構築

zoneファイルに以下を追加します。 xxxはサーバのIPアドレス

www         IN A     192.168.10.xxx

7.バーチャルホスト設定の動作確認

以下のコマンドでnginxサービスを再起動します。

$ sudo systemctrl restart nginx

http://【5-2.で設定したドメイン名】にアクセスすると、nginxのデフォルトページが表示されます。

終わりに

今回はhttp通信によるwebサーバを構築しました。次回はhttps通信によるwebサーバを構築します。