Nginx(Reverse Proxy)を入れてみる

ちょこっと気になってAIさんに聞いてみた。
proxyって何?ってね。
で、今回もハマりそう。

Nginx(何て読むんだ?)を入れると、
クライアント-(https)→nginx-(http)→web server
となるらしい。

まぁ、当たり前だよね。sslで暗号化されてたら中身の確認できないもの。
と、言うことはweb serverに持たせていた証明書セットを、nginxを入れた方(別mac)にも持たせないといけない。
最終的にはnginx側で全部の証明書を管理することになるんだけどね。
現行のweb serverはhttpのみになる。

local環境では直読みを考えているから、そうもいかないんだけどね。
外部クライアント-(https)→nginx-(http)→web server
内部クライアント-(https)→web server
と使い分ける予定だから、少々?面倒臭い。

AIさんは状況を把握しきれない(判らなくて当然)から仕方ないんだけどね。
web server側ではMurusのPFが鍛えられている。
この内容をproxy側に反映させれば、態々不要なパケットをlocalに流さなくて済む。
最初に行うのがこれだな。
Server側のMurusのBlacklistを更新時に、Proxy側にも反映させれば同期してパケットを減らせる。
その方法は知らんけど……。

と、nginx(エンジンエックス?)入れてみた。
web server側を一切触らない(何時でも戻せる)形で動かしてみる。
port install nginxした後、/opt/local/etc/nginx/nginx.confを弄る。
と言っても何時ものようにAIさん任せだけどな〜。

転送
location / {
proxy_pass http://:80;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

# ==================================================
# 2. HTTPS(ポート443)の受付窓口
# ==================================================
server {
listen 443 ssl;
server_name k-in.co.jp www.k-in.co.jp;

# 【仕込み】Mac Aから持ってきた本番用のFujiSSL証明書をとりあえず指定
# (※これでMac BにDNSが切り替わった瞬間もHTTPSエラーを回避します)
ssl_certificate /opt/local/etc/nginx/ssl/fujissl/server.crt;
ssl_certificate_key /opt/local/etc/nginx/ssl/fujissl/none-pass-server.key;

# JetpackやWordPressのアクセスを、裏のMac A(Apacheの443番)へ暗号化したままスルー
location / {
proxy_pass https://:443;

# リバースプロキシの必須ヘッダー群
proxy_set_header Host $http_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 https;

# 念のため、重い処理でタイムアウトしないように長めにとっておく
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
}
}
}
server {
listen 443 ssl;
server_name niwakan.k-in.co.jp;

# 【仕込み】Mac Aから持ってきた本番用のletsencrypt証明書をとりあえず指定
# (※これでMac BにDNSが切り替わった瞬間もHTTPSエラーを回避します)
ssl_certificate /opt/local/etc/letsencrypt/live/niwakan.k-in.co.jp/fullchain.pem;
ssl_certificate_key /opt/local/etc/letsencrypt/live/niwakan.k-in.co.jp/privkey.pem;

# JetpackやWordPressのアクセスを、裏のMac A(Apacheの443番)へ暗号化したままスルー
location / {
proxy_pass https://:443;

# リバースプロキシの必須ヘッダー群
proxy_set_header Host $http_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 https;

# 念のため、重い処理でタイムアウトしないように長めにとっておく
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
}
}
}

これのうち、ここのところがミソ。
# 【超重要】Let’s Encryptの認証が来たら、Mac Bの地元のフォルダで即対応
location /.well-known/acme-challenge/ {
root /opt/local/share/nginx/html;
}
これからだけど、k-in.co.jpのdomain証明書を取ろうと思っている。
niwakan.k-in.co.jpはそっちで動かす予定。

% nginx -tでコンフィグのテスト
% nginx -s reloadで、設定ファイルの読み直しをさせて完了。……かな?

次するのはルーターの静的Natの変更です。

何がいけない?
ログを見に行ったら、httpでの後httpsでも確認に来ているみたい。
https側はpass throughだったから現行のweb serverに行っちゃった。
そっには/opt/local/share/nginx/htmlなんて無いからoutだった模様。

前準備を怠っていた。
Googleのサイト証明書を取得してみる(1)に書いてあったわ。

これ全くやってない。
他にも抜けがありそうです。
一回休みね。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)