【nginx】SSL対応リバースプロキシ設定

例えばマシンAのnginxからマシンB、マシンCで動作しているサービスにリバースプロキシしたいとき
ubuntuを想定、インストール作業は省きます。
ドメイン名を取得していて、Let's EncryptでSSL証明書を取得していることが前提で記載してみます。
MyDNSなどで無料で取得してみてください。
マシンB、マシンCはIPアドレスで可能です。
以下設定でできること
・マシンAのtest1.comからマシンBの8080サービスへ
・マシンAのtest2.comからマシンCの8080サービスへ
・マシンAに80番ポートで入ってくるものを443に変更
マシンAのnginx
■/etc/nginx/nginx.conf
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
}
■/etc/nginx/conf.d/node.conf
# HTTP → HTTPSリダイレクト
server {
listen 80;
server_name ドメイン名A.jp ドメイン名B.jp;
return 301 https://$host$request_uri;
}
# ドメイン名A.jp
server {
listen 443 ssl;
server_name ドメイン名A.jp;
ssl_certificate /etc/letsencrypt/live/ドメイン名A.jp/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ドメイン名A.jp/privkey.pem;
location / {
proxy_pass http://マシンBのIPアドレス:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# ドメイン名B.jp
server {
listen 443 ssl;
server_name ドメイン名B.jp;
ssl_certificate /etc/letsencrypt/live/ドメイン名B.jp/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ドメイン名B.jp/privkey.pem;
location / {
proxy_pass http://マシンCのIPアドレス:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
設定ファイルを記載して保存が完了後にngiunxをリスタートして設定を反映してください。
※エラーがでたら原因を調べてみてください。大体は記述ミスだと思います。
sudo systemctl restart nginx
sudo systemctl restart nginx
sudo systemctl restart nginx
3回くらい繰り返し実行してください!1回だけだとファイル読み込みが完全にされないためか、反映されないため沼ります。