戒めとして書きます。
/etc/nginx/sites-available/example
server {
listen 80;
server_name example.com;
location / {
root /var/www/exmample.com;
index index.html;
}
}
ととてもシンプルに記述していたのですが、
http://example.comにブラウザからアクセスしてもnginxのあの初期ページが出てきて話になりません。
$ls -l /var/www/example.com
-rw-r--r-- 1 www-data www-data 25 Apr 5 12:30 index.html
で権限など見ても別に問題はないように見えますし。。。
access_logを見てみる
最初はsites-available/exampleの中にaccess_log /var/log/nginx/access.log;を記述してましたが、/etc/nginx/nginx.confの中のhttpブロックの中に記述してありましたね。早速見てみましょう。
2001:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx - - [06/Apr/2025:08:56:02 +0000] "GET / HTTP/1.1" 200 56 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0"
ん~特に404とエラーが出るわけじゃないのになぁ。。。。
答え
はい、そうですよく見てください、 2001:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx からアクセスされています。要はIPv6アドレスからアクセスしてることになってますね。
で最初の/etc/nginx/sites-available/exampleを見返してみるとlisten 80;しかありませんね。
サーバーがIPv4しかアドレスを提供していない、
ドメインのDNSレコードでAAAAを設定していない
なら話は別ですが、世はまさにIPv6時代ですからこれを記述しないと標準で初期ホームページにアクセスされるようですね。
/etc/nginx/sites-available/example
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
root /var/www/exmample.com;
index index.html;
}
}
と書いてブラウザのプライベートモードでアクセスしたらちゃんと動きました。これでcertbotがちゃんと動くね。
コメントを残す