自宅サーバで構築できる各種サービスはweb経由でアクセスできるものが多数ありますので、各種サービスにアクセスできるようにwebサーバを構築して、自宅内LANからアクセスできるようにします。
Nginxのインストール #
サーバにて以下のコマンドでnginxをインストールします。
# Arch Linux
sudo pacman -S nginx-mainline
iptablesの設定 #
iptablesでTCP80、443番ポートへアクセスを許可します:
# 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サービスを有効にして起動します:
sudo systemctl enable nginx
sudo systemctl 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.mkt3.devとする。
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
の設定を有効化します:
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アドレス。
www IN A xxx.xxx.xxx.xxx
バーチャルホスト設定の動作確認 #
以下のコマンドでnginxサービスを再起動します:
sudo systemctl restart nginx
http://【設定したドメイン名
にアクセスすると、Nginxのデフォルトページが表示されることを確認します。