Webサーバ(nginx)の構築

2018年10月18日 2022年3月4日

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

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

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

nginxのインストール

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

Terminal
sudo pacman -S nginx-mainline

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

nginxサービスの開始

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

Terminal
sudo systemctrl enable nginx
sudo systemctrl 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.mako-note.comとします。

# /etc/nginx/sites-available/www.conf
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;
}
}

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

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

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

dnsの設定

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

www         IN A     192.168.10.xxx

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

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

Terminal
sudo systemctrl restart nginx

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

終わりに

今回はhttp通信によるwebサーバを構築しました。今後はhttps通信によるwebサーバを構築していきたいと思います。

Posted by mako
関連記事
コメント
...