2024年3月17日 | グランドセイコー |
2024年2月9日 | 防水温湿度計 |
2024年2月12日 | Bluetoothマウス切断 |
2024年2月11日 | ANKER SoundCore |
2024年2月10日 | ノート給油 |
2024年2月8日 | ハクキンカイロ発熱量 |
2024年1月28日 | 出勤セット |
202年1月7日 | バイク保険更新 |
2024年1月2日 | M-CR612購入 |
2023年12月26日 | モバイルディスプレイ |
FreeBSD 11.1p9でapache2.4.33を動かしているのだが、 どうもLet's EncryptのSAN証明書が使えない。 3月くらいまでは使えていたのだが。 OSかapacheのバージョンアップで何か変わったのかもしれない。 なので、フロントエンドをnginxにして、 CGIをapacheで実行するようにしてみた。
# pkg install nginx-full
でインストール。
設定ファイルは/usr/local/etc/nginx/nginx.confなので、 http以下を
http { include mime.types; default_type application/octet-stream; expires 7d; sendfile on; keepalive_timeout 65; gzip on; server { listen 80; server_name www.akiyama.nu; location / { root /usr/local/www/apache24/data; index index.html; ssi on; ssi_last_modified on; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } } # HTTPS server # server { listen 443 ssl http2; server_name www.akiyama.nu; ssl_certificate /usr/local/etc/letsencrypt/live/tomoaki.akiyama.nu/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/tomoaki.akiyama.nu/privkey.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE+AESGCM:DHE+AESGCM:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/local/www/apache24/data; index index.html; ssi on; ssi_last_modified on; } } }
として実にあっさりと動いた。 で、locationやssl関連の設定はvirtual hostなど複数ヶ所で同じ物を使うので、 include化した。
http { include mime.types; default_type application/octet-stream; expires 7d; sendfile on; keepalive_timeout 65; gzip on; server { listen 80; server_name www.akiyama.nu; include root.conf; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } } # HTTPS server # server { listen 443 ssl http2; server_name www.akiyama.nu; include ssl.conf; include root.conf; } }
ssl.confやroot.confは/usr/local/etc/nginx/に配置してあり、 それぞれ
ssl_certificate /usr/local/etc/letsencrypt/live/tomoaki.akiyama.nu/fullchain.pem; ssl_certificate_key /usr/local/etc/letsencrypt/live/tomoaki.akiyama.nu/privkey.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers ECDHE+AESGCM:DHE+AESGCM:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
location / { root /usr/local/www/apache24/data; index index.html; ssi on; ssi_last_modified on; }
となっている。
なお、nginxではCGIを直接実行できない。 色々と方法はあるらしいが、 今回はapacheを8080ポートで待ち受けさせて、 そちらにproxyすることにした。
http { include mime.types; default_type application/octet-stream; expires 7d; sendfile on; keepalive_timeout 65; gzip on; server { listen 80; server_name www.akiyama.nu; include root.conf; location /awstats/awstats.pl { proxy_pass http://192.168.2.2:8080/awstats/awstats.pl; } location /awstatsclasses { alias /usr/local/www/awstats/classes/; } location /awstatscss { alias /usr/local/www/awstats/css/; } location /awstatsicons { alias /usr/local/www/awstats/icon/; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } } # HTTPS server # server { listen 443 ssl http2; server_name www.akiyama.nu; include ssl.conf; include root.conf; location /awstats/awstats.pl { proxy_pass http://192.168.2.2:8080/awstats/awstats.pl; } location /awstatsclasses { alias /usr/local/www/awstats/classes/; } location /awstatscss { alias /usr/local/www/awstats/css/; } location /awstatsicons { alias /usr/local/www/awstats/icon/; } } }
proxy_passでapacheに処理を任せている。 aliasは、AWStatsの画像がうまく表示されなかったので追加した。 これもhttpとhttpsの両方で同じ設定なので、 include化してある。
結局、nginxをリバースプロキシにして、 apacheをバックエンドで動かすことにした。 設定としては
と、比較的シンプルになった。 速度的には不利な方法だが、 CGIがそのまま動くという魅力には勝てなかった。