💬

Nginxを使ってリバースプロキシなるものをしてみる

2023/07/24に公開

自分のメモ用に書いてます。間違った設定をしている可能性があるので、指摘等してもらえると助かります。
domain.com使ってる人少ない気がする。おるんかね。。。?

やりたいこと

  1. CloudflareでSSL証明書を発行 >> 自分のドメインからhttpsでアクセスできるように
  2. 任意のサブドメインとかpathから飛ばしてぇ

環境

domain: domain.com
基盤: proxmox
CPU : 4 core
RAM : 4 GB (こんなにもいらないと思った)
OS : ubuntu-22.04.2

domain.comでサブドメインを登録


左側のPointers & Subdomainsを選択

+Add Subdomainから任意のサブドメインを作る

今回はapiでやる

cloudflareのDNSにCNAMEで登録


レコードの追加からこんな感じで追加する

CloudflareとLet's EncryptでSSL証明書発行!

Cloudflare の Homeから任意のドメインを選択して、右側にあるAPIトークンを取得を選択!

ここのGlobal API Keyをメモっとく (※自分の孫くらい大切に扱ってね)

ubuntuコンソールに移動

必要なパッケージをインストールする

sudo apt install update
sudo apt install python3-certbot-dns-cloudflare

認証に必要なファイルつくる

sudo mkdir -pv /etc/letsencrypt
{
  echo dns_cloudflare_email = <cloudflareのメアド>
  echo dns_cloudflare_api_key = <さっきメモったGlobal API key>
} | sudo tee /etc/letsencrypt/cloudflare_secret.ini
sudo chmod 600 /etc/letsencrypt/cloudflare_secret.ini

証明書の取得

sudo certbot certonly \
-n \
--agree-tos \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare_secret.ini \
--dns-cloudflare-propagation-seconds 20 \
--email <cloudflareのメアド> \ 
-d *.<紐づけたいドメイン> \
-d <紐づけたいドメイン>

これで証明書が /etc/letsencrypt/live/<ドメイン> に格納されてるはず
後は任意で、CRON JOBにcertbot renew を定期的に実行するようにしてあげると自動で更新される

わかりやすいように今後はsalmon-sushi.comで説明する((わかりにくくね?

参考記事

https://eggpan.net/post/ubuntu-certbot-dns-cloudflare/

Nginxを使ってリバースプロキシする

必要なパッケージインストールする

sudo apt update
sudo apt install python3-certbot-nginx

confファイルの設定

※この辺よくわかってない

server {
    listen  443 ssl;
    #↓さっき生成された証明書を選択           ↓自分のドメインでね
    ssl_certificate /etc/letsencrypt/live/salmon-sushi.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/salmon-sushi.com/privkey.pem;
    server_name salmon-sushi.com;

    location / {
        proxy_pass <飛ばしたい先のURL>;
     }
}

server {
   listen  443 ssl;
   
    ssl_certificate /etc/letsencrypt/live/salmon-sushi.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/salmon-sushi.com/privkey.pem;
    server_name  api.salmon-sushi.com;

    location /test/ {
        rewrite /test/(.*) /$1  break;
        proxy_pass <飛ばしたい先のURL>;
     }
    location /current/ {
        rewrite /current/(.*) /$1  break;
        proxy_pass <飛ばしたい先のURL>;
    }
}

追記すると思う

Discussion