本文へスキップ
← ガイド一覧

自分のドメインでWebサイトを作る (Nginx・無料HTTPS)

UbuntuサーバーにWebサーバー(Nginx)をインストールし、自分のドメインを接続してから、無料の証明書でHTTPS(鍵マーク)まで適用する方法です。

1. Nginxのインストール

sudo apt update
sudo apt install -y nginx

ファイアウォール(ufw)をオンにしている場合は、Webのポートを開けます。(ファイアウォールのポートを開ける)

sudo ufw allow 'Nginx Full'

ブラウザーでhttp://server-ipにアクセスし、「Welcome to nginx!」の画面が表示されれば成功です。

2. ドメインを接続する

ドメインを購入したところ(gabia、hosting.kr、Cloudflareなど)のDNS管理メニューで、レコードを追加します。

タイプホスト(名前)値
A@サーバーのIP
AwwwサーバーのIP

DNSの反映には通常数分、長いと数時間かかります。自分のPCで次のコマンドを実行してサーバーのIPが表示されれば、接続できています。

nslookup example.com

3. 自分のサイトを設定する

Webファイルを置くフォルダーを作り、Nginxの設定ファイルを作成します。(example.comは自分のドメインに置き換えます)

sudo mkdir -p /var/www/example.com
echo '<h1>Hello Nevv!</h1>' | sudo tee /var/www/example.com/index.html
sudo nano /etc/nginx/sites-available/example.com
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
}

設定を有効にして、Nginxを再読み込みします。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t            # 設定の文法チェック — "ok"と表示される必要があります
sudo systemctl reload nginx

Node.js・Pythonアプリを接続したい場合

アプリがサーバー内で、たとえば3000番ポートで実行中なら、上の設定のroot、indexの行の代わりに次の内容を入れます。

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

4. HTTPSの適用 (無料の証明書)

Let's Encryptの証明書を自動で発行・インストールしてくれるcertbotを使います。ステップ2のドメイン接続が終わってから進めてください。

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

メールアドレスの入力と規約への同意が終わると、自動で設定されます。証明書は90日ごとに自動更新され、次のコマンドで更新が正しく行われるかを事前に確認できます。

sudo certbot renew --dry-run

うまくいかないとき

  • サイトが開きません — sudo systemctl status nginxでNginxが実行中か、ファイアウォールで80/443が開いているかを確認してください。
  • certbotが失敗します — ほとんどの場合、ドメインがまだサーバーのIPに接続されていないのが原因です。まずnslookupで確認してください。
  • 502 Bad Gateway — proxy_passで接続したアプリが停止しています。先にアプリを実行してください。

解決しない問題がある場合は、Discordのチケットでお問い合わせください。