12/28 (水)
[MyWeb] www.nminoru.jp の Web サーバーを HTTPS 化
http://www.nminoru.jp/ で運用していた Web サーバーを HTTPS 化し https://wwww.nminoru.jp/ にする。
Web サーバー自体は Apache HTTP Server を使い、HTTPS 化は nginx でリバースプロキシを立てて実現することにする。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; # サーバーのバージョン情報を隠す server_tokens off; # HTTP は HTTPS にリダイレクトする server { listen 80 default_server; server_name www.nminoru.jp; return 301 https://$host$request_uri; } # HTTPS のアクセスは local-server へ転送する server { listen 443 ssl; server_name www.nminoru.jp; ssl_certificate "/etc/letsencrypt/live/nminoru.jp/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/nminoru.jp/privkey.pem"; location / { proxy_pass http://local-server$request_uri; proxy_redirect ~^https?://.+?/(.+)$ https://www.nminoru.jp/$1; # buffering proxy_buffering off; # retries off proxy_next_upstream off; # request buffering proxy_request_buffering off; } } }
nginx.conf の記述は、以下の主旨である。
- HTTP は HTTPS へリダイレクトする。
- HTTPS のアクセスは proxy_pass によってリバースプロキシを作成し、内部 Apache HTTP Server へ転送する。
- 内部 Apache HTTP Server のレスポンスの Location を書き換えるために proxy_redirect を指定する。 これはレスポンスの Location の書き換えを正しくしないと、フォワードが正しく動かない。
- proxy_redirectは
proxy_redirect ~^https?://.+?/(.+)$ https://www.nminoru.jp/$1;
としている。- URL の置換を case-sensitive で行うため
~^
ではじめる。 - https と https を同時に扱うため
https?
とする。 - ホスト部分を抜き出すために // と / の間を抜き出すため
//.+?/
とする。 最小一致とするため?
を使う。
- URL の置換を case-sensitive で行うため
- nginx のリバースプロキシは、デフォルトでリクエストのバッファリングやリトライを行う設定となっている。
- proxy_request_buffering はクライアントからのリクエストを nginx でバッファリングするかどうかを指定する。 これが on の場合、nginx が local-server へ転送したリクエストが応答しない場合、リトライをかけることになる。 リトライをさせないために off にする。
- proxy_next_upstream は local-server が応答しない場合に、nginx がどのような処理を行うか決めるために指定する。 リトライをさせないために off にする。
- proxy_buffering は local-server からのレスポンスを nginx がバッファリングするかどうかを指定する。 巨大なファイルをダウンロードする場合に nginx で一時キャッシュするので、クライアントから見るとダウンロードデータがすぐに渡してもらえない上に nginx 側のディスクがあふれた場合に転送エラーとなったりするので off にする。
- Web サーバーのバージョンを隠すために
server_tokens off
を指定する。
[MyWeb] 開発用 Web サーバーにクライント証明書を追加
公開用の Web サーバーとは別に開発用 Web サーバーを立てているが、後者は自分以外からアクセスできないようにクライアント証明書を使った認証を行うことにする。 ただサーバー証明書を発行している Let's Encrypt はクライアント証明書を発行することができない。 ただ調べてみるとサーバー証明書さえ信頼された証明機関からされていれば、クライアント証明書は自己署名された自己認証局のものでもよいと分かる。
以下を参考に CA 証明書とクライアント証明書を作成する。
自分の Web サーバーの nginx に以下のように設定する。
# HTTPS のアクセスは local-server へ転送する
server {
listen 443 ssl;
server_name www-intra.nminoru.jp;
# Let's Encrypt で取得したサーバー証明書
ssl_certificate "/etc/letsencrypt/live/nminoru.jp/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/nminoru.jp/privkey.pem";
# 自己認証局で取得したクライアント証明書
ssl_client_certificate "/etc/nginx/client_certificates/ca.crt";
ssl_verify_client on;
location / {
proxy_pass http://local-server$request_uri;
proxy_redirect ~^https?://.+?/(.+)$ https://www.nminoru.jp/$1;
# buffering
proxy_buffering off;
# retries off
proxy_next_upstream off;
# request buffering
proxy_request_buffering off;
}
}
12/23 (日)
[Movie] かがみの孤城
109シネマズ川崎で『かがみの孤城』を観る。
原作は読まずに鑑賞したが、正直非常に面白かった。 今年見た映画の中ではNo.1か。
追記: 12/29
かがみの孤城の2回目を109シネマズ川崎で観る。 2度目の鑑賞なので、伏線シーンに気をつけて観る。
12/21 (水)
キーボードにヨーグルトをぶっかけた
昼飯にヨーグルトドリングを買ったが、蓋を開けたままシェイクしてしまい中身が半分ほどぶちまけてしまった。 キーボードにも被って、しばらくしたらシフトを押したままキーを押しても大文字が出なくなってしまった。 被災したのは2018年6月16日に購入した富士通コンポーネント製のテンキーレスキーボードだが、もうこのキーボードは製造終了していてもう入手できない。
キーボードを購入
壊れたキーボードの替わりに横浜ヨドバシでロジクールの K835 TKL メカニカル を購入した。 自宅に帰ってから触っていると打鍵音が意外に煩いのに気づく。 テンキーレスが欲しくてこれにしたがメカニカルだったわ。
追記: 12/27
打鍵音が煩すぎるので川崎ヨドバシでAPEX 3 TKLというキーボードを買った。 打鍵音はほとんど気にならなくなったが、ゲーミングキーボードだけあって3色に光る。
12/16 (金)
[Movie] アバター: ウェイ・オブ・ウォーター
チネチッタで『アバター: ウェイ・オブ・ウォーター』(原題: Avatar: The Way of Water)で字幕版を観る。
1作目のアバターを観たのは2009年12月で、これからは3D映画の時代だ!のように盛り上がったが10年以上経過した現在3D映画がすっかり下火になってしまった。 他の劇場では IMAX 3D をやっているが、チネチッタは3D映画自体を止めてしまっている。
観客の入りも、1作目はチネチッタで公開初日を観た時は劇場は満員だったが、今作は3割も入っていないかった。 1作目もストーリーはありきたりだと思ったが、今作は尺が長くて冗長だと感じた。 あと3と4も作るようだが、どうなることやら。
12/8 (木)
大腸内視鏡検査
聖マリアンナ医科大学東横病院で大腸内視鏡検査を受診。
消化器官の空にするために7時から2時間をかけて下剤を摂取する。 下剤は粉上なものを水で溶いて2リットルにし、それを何回かに分けて飲んでいく。 ポカリスエットみたいな微妙な味がするので飲みにくい。
飲み終ると下剤が効いてくる。 出るものが徐々に液状になってゆき、終盤は尻穴からジェット噴射状態になる。
受診は13時から。 麻酔を使って眠りながら検査を受けたので、検査は感覚的に一瞬で終った。 検査は14時半には終了。