メインコンテンツへスキップ

NginxによるWebサーバの構築

··1 分·
Linux Nginx
Makoto Morinaga
著者
Makoto Morinaga
技術メモ、コーディング、環境構築のための個人ノート。
目次

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

Nginxのインストール
#

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

Terminal
# Arch Linux
sudo pacman -S nginx-mainline

iptablesの設定
#

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

Terminal
# 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

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

Nginxサービスの開始
#

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

Terminal
sudo systemctl enable nginx
sudo systemctl start nginx

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

nginx.conf設定
#

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

/etc/nginx/nginx.conf
#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/*;

バーチャルホスト別設定
#

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

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

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

sites-availableに設定ファイルの配置
#

Nginxのデフォルトページの設定をwww.confとして保存する。 ここでは、ドメイン名をwww.mkt3.devとする。

/etc/nginx/sites-available/www.conf
server {
    listen 80;
    server_name www.mkt3.dev;

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

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

sites-availableの設定ファイルの有効化
#

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

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

DNSの設定
#

IPアドレスの直打ちを禁止したので、dnsで名前解決をしてアクセスするようにします。 dnsの具体的な設定方法は、NSDとUnboundによる内部向けDNSサーバの構築の記事を参照下さい。 zoneファイルに以下を追加します。 xxx.xxx.xxx.xxxはサーバのプライベートIPアドレス。

zoneファイル
www         IN A     xxx.xxx.xxx.xxx

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

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

Terminal
sudo systemctl restart nginx

http://【設定したドメイン名にアクセスすると、Nginxのデフォルトページが表示されることを確認します。

関連記事

Sambaによるファイル共有サーバの構築
··2 分
Linux Samba
NSDとUnboundによる内部向けDNSサーバの構築
··2 分
Unbound Nsd Linux
iptablesの設定
··2 分
Linux Firewall Iptables