Webサーバ(nginx)の構築
この記事では、nginxによるWebサーバの構築方法を紹介します。
自宅サーバで構築できる各種サービスはweb経由でアクセスできるものが多数ありますので、各種サービスにアクセスできるようにwebサーバを構築して、自宅内LANからアクセスできるようにします。
なお、今回はArchLinuxにおけるnginxの設定になります。
nginxのインストール
サーバにて以下のコマンドでnginxをインストールします。
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サービスを有効にして、起動します。
sudo systemctrl enable nginx
sudo systemctrl start nginx
http://【サーバのIPアドレス】 にアクセスするとnginxのデフォルトページが表示されます。
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/*;
バーチャルホスト別設定
バーチャルホスト設定ファイル配置用のディレクトリ作成
以下のコマンドで Webサイト設定用のディレクトリを作成します。 今後は、sites-availableに設定ファイル実体を配置して、有効化する際は、sites-enabledに設定ファイルへのシンボリックリンクを張ります。 設定を無効化する場合は、シンボリックリンクを削除することで、容易に無効化できます。
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の設定を有効化します。
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サービスを再起動します。
sudo systemctrl restart nginx
http://【設定したドメイン名】 にアクセスすると、nginxのデフォルトページが表示されます。
終わりに
今回はhttp通信によるwebサーバを構築しました。今後はhttps通信によるwebサーバを構築していきたいと思います。