
У меня возникли проблемы с доступом к моим веб-сайтам, размещенным на моем Raspberry Pi в моей домашней сети. До недавнего времени все работало, и я не могу понять, что я сделал, чтобы все сломать :( Если я запускаю curl -I sarahcorballis.com
с Pi (т.е. с той же машины, на которой размещен сервер), или откуда-либо еще, я получаю:
HTTP/1.1 301 Moved Permanently
Location: https://sarahcorballis.com/
Date: Fri, 08 Jan 2021 07:45:43 GMT
Server: lighttpd
Однако, если я запущу curl -I localhost
(или localhost:80), то с Pi я получу:
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Fri, 08 Jan 2021 07:57:05 GMT
Content-Type: text/html
Content-Length: 3801
Last-Modified: Mon, 22 Apr 2019 18:39:21 GMT
Connection: keep-alive
ETag: "5cbe0a59-ed9"
Accept-Ranges: bytes
Сайт, действительно, размещен на nginx, поэтому я ожидал бы увидеть Server: nginx/1.14.2
на всех запросах. Мне интересно, Server: lighttpd
это просто отвлекающий маневр или, если это так, действительно что-то подразумевает?
У меня следующая сетевая настройка: Интернет -> маршрутизатор, предоставленный провайдером -> ASUS RX88U -> Raspberry Pi
На маршрутизаторе интернет-провайдера и маршрутизаторе ASUS установлена переадресация портов 80-80 и 443-443, и в журналах обоих устройств проблем не обнаружено.
До вчерашнего дня даже curl -I localhost выдавал ответ lighttpd, так что я думаю, что это где-то в Raspberry Pi, но я в замешательстве.
Вот вывод ufw status
:
ERROR: Couldn't determine iptables version
Вот iptables-save
вывод:
iptables-save/1.8.2 Failed to initialize nft: Protocol not supported
Итак, это еще одно изменение со вчерашнего дня. Итак, что изменилось? Ну, я перешел с stretch на buster.
решение1
Итак, теперь это решено. На случай, если у кого-то будет похожая настройка и он столкнется с той же проблемой в будущем, проблема была в том, что я удалил третий сайт (он мне больше не нужен); однако у этого сайта были сертификаты ssl, которые покрывали все три сайта, и теперь их нет. Хуже того, я не использую Letsencrypt, а вместо этого использую сертификаты происхождения Cloudflare с HSTS для обеспечения более надежной безопасности. Cloudflare вызывал перенаправление, которое затем не работало из-за отсутствия сертификата. Теперь я принял систему с одним сертификатом на сайт (урок извлечен).
Решение:
- Создайте новый сертификат — по одному для каждого сайта
- Сохраните сертификаты (PEM и ключ) в каталогах на сервере.
- Измените блоки сервера в nginx (/etc/nginx/sites-enabled), чтобы они указывали на правильные каталоги и обеспечивали включение http2.
- Убедитесь, что в Cloudflare выбрано значение SSL Strict.
Вот блок конфигурации nginx для одного из сайтов:
# configuration file /etc/nginx/sites-enabled/<website>.com:
server {
listen 80;
listen [::]:80;
server_name sarahcorballis.com www.<website>.com;
return 302 http://$server_name$request_uri;
}
server {
# SSL Configuration for Cloudflare
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/ssl/certs/<website>.com.pem;
ssl_certificate_key /etc/ssl/private/<website>.com.key;
server_name <website>.com www.<website>.com;
root /var/www/sarahcorballis.com/;
index index.html;
try_files $uri $uri/ /index.html ;
client_max_body_size 50m;
}
Вам нужно будет изменить его на тот веб-сайт, который у вас есть, и убедиться, что суффикс такой же, как у вас, если вы случайно скопировали блок выше.