Вопрос или проблема
Я пытаюсь разместить сайт на своем Raspberry Pi. Когда я хостинг сайт с использованием nginx с именем сервера, равным моему доменному имени, он не отвечает. Однако когда я использую свой публичный IP-адрес, он разрешается на сайт, а доменное имя – нет.
Первое, что я попробовал, это проверить, распространилось ли доменное имя (что и произошло). Я проверил это, используя команду ping на своем доменном имени, которая начала возвращать мой IP-адрес. Я также использовал nslookup, чтобы посмотреть, правильно ли привязано доменное имя, что также вернуло мой IP-адрес. Это означает, что это не должно быть связано с тем, как я привязал доменное имя через A-запись.
Второе, что я попытался сделать, это проверить, может ли это быть проблема в моем браузере. Чтобы проверить это, я очистил DNS на своем устройстве, использовал другое интернет-соединение и даже использовал другое устройство. Все это давало мне ту же ошибку тайм-аута при попытке загрузить веб-страницу через мое доменное имя. Я также попробовал использовать curl для веб-страницы, но это также заняло слишком много времени.
Третье, что я пытался сделать, это проверить, правильный ли у меня файл nginx:
server {
listen 80;
server_name cache-app.co.uk www.cache-app.co.uk;
# Проксировать запросы на фронтенд
location / {
proxy_pass http://localhost:5063/;
proxy_set_header Host $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 $scheme;
}
# Проксировать запросы к API
location /api/ {
proxy_pass http://localhost:37364/;
proxy_set_header Host $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 $scheme;
}
}
Я не думаю, что это было проблемой, поскольку я протестировал это, используя конфигурацию по умолчанию, предоставляемую nginx, изменив только имя сервера на IP-адрес, и он по-прежнему не отвечает.
Четвертое, что я сделал, это проверил журналы доступа, чтобы увидеть, доходят ли мои запросы. При их просмотре видно, что nginx не получает никаких журналов доступа, и в журналах также не отображаются ошибки.
Пятое, что я попробовал, это добавить SSL-сертификат, чтобы я мог использовать HTTPS. Но всякий раз, когда я пытаюсь добавить SSL-сертификат, я получаю такие сообщения (это с сайта Lets debug).
Попытка получить SSL-сертификат
Но я правильно связал свою A-запись, так что не имею представления, что это значит.
Я пытался проверить, нет ли межсетевого экрана, но у меня не активирован ufw, и на роутере я временно отключал межсетевой экран, чтобы увидеть, сработает ли это, но не сработало.
Я буквально не могу придумать ничего другого, я на самом деле сходу с ума.
Брат, такой тупой, лмаф, ХАХАХАХАХАХАХАХА
Ответ или решение
Судя по вашему описанию, у вас уже проделана значительная работа по диагностике проблемы с доступом к вашему веб-сайту на Raspberry Pi под управлением Nginx. Давайте рассмотрим шаги, которые вы могли бы предпринять для устранения проблемы, когда IP-адрес отвечает, а доменное имя — нет.
-
Проверка DNS: Вы упомянули, что проверяли, правильно ли разрешается ваше доменное имя и что оно возвращает правильный IP-адрес. Однако, важно убедиться, что DNS-сервер, используемый вашими устройствами, правильно обновлен. Вы можете попробовать использовать публичные DNS-серверы, такие как Google (8.8.8.8 и 8.8.4.4) или Cloudflare (1.1.1.1), чтобы исключить проблемы с кэшированием.
-
Настройка Nginx: Ваш конфигурационный файл Nginx выглядит в целом нормально, но стоит проверить следующее:
- Убедитесь, что ваш конфигурационный файл правильно загружен. Выполните команду
nginx -t
для проверки ошибок в конфигурации. - Убедитесь, что у вас нет конфликтующих конфигураций, особенно если есть другие файлы в директории
/etc/nginx/sites-enabled/
.
- Убедитесь, что ваш конфигурационный файл правильно загружен. Выполните команду
-
Порты и доступ: Убедитесь, что ваш Raspberry Pi правильно настраивает порты. Проверьте, что порт 80 открыт:
sudo netstat -tuln | grep ':80'
Если сервера нет в списке, значит Nginx не слушает на порту 80.
-
Проблемы с файрволлом: Хотя вы упомянули, что UFW отключен, также проверьте, нет ли других правил файрволла или фильтров в роутере, которые могут блокировать соединение на порту 80 или 443.
-
Проблемы с SSL сертификатом: Если вы пытаетесь настроить HTTPS, убедитесь, что вы правильно настроили Nginx для работы с SSL. Также убедитесь, что сертификат действителен и размещен в правильных местах. Вот пример основной конфигурации для SSL:
server { listen 80; server_name cache-app.co.uk www.cache-app.co.uk; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name cache-app.co.uk www.cache-app.co.uk; ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; location / { proxy_pass http://localhost:5063/; proxy_set_header Host $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 $scheme; } location /api/ { proxy_pass http://localhost:37364/; proxy_set_header Host $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 $scheme; } }
-
Логи и отладка: Проверьте логи Nginx (
/var/log/nginx/error.log
и/var/log/nginx/access.log
) на наличие сообщений об ошибках, которые могут указать на причину, по которой запросы не доходят до вашего сервера. -
Тестирование: Попробуйте выполнить
curl
с флагом-v
на ваш домен, чтобы получить более подробную информацию о процессе соединения:curl -v http://cache-app.co.uk
Если после выполнения этих шагов проблема все еще не решена, возможно, потребуется более детальное обследование сетевой конфигурации или обращение к вашему хостинг-провайдеру, чтобы исключить другие возможные проблемы.