Вопрос или проблема
nginx установлен и работает нормально. Но я не получаю никакого ответа (т.е. таймаут) от Firefox на другом компьютере по URL https//johnrose.mywire.org/summer.html. Этот URL имеет сертификат, созданный Certbot, который также модифицировал файл johnrose.mywire.org в /etc/nginx/sites-available/. Когда я дважды нажимаю на файл summer.html на сервере nginx, он отображается нормально в Firefox. У меня открыты все порты nginx (т.е. 80 и 443) (в ufw) на сервере nginx, и маршрутизатор перенаправляет порты 80 и 443 на сервер nginx. Есть ли предложения, как это устранить?
summer.html находится в ‘корневом’ каталоге johnrose.mywire.org:
<!DOCTYPE html>
<html>
<head>
<style>
img {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<h1><b>Лето с Котом</b></h1>
<br>
<img src="../images/summer.jpg" alt="Лето" width="400" height="300">
<br>
<p><b>Жизнь так трудна</b></p>
<br>
</body>
</html>
summer.jpg находится в каталоге images ‘корневого’ каталога johnrose.mywire.org.
Вот блок сервера johnrose.mywire.org:
# Конфигурация виртуального хоста для johnrose.mywire.org
#
# Вы можете переместить это в другой файл в каталоге sites-available/ и создать символическую ссылку
# на sites-enabled/ для его активации.
#
server {
server_name johnrose.mywire.org;
root /home/manager/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # управляется Certbot
listen 443 ssl; # управляется Certbot
ssl_certificate /etc/letsencrypt/live/johnrose.mywire.org/fullchain.pem; # управляется Certbot
ssl_certificate_key /etc/letsencrypt/live/johnrose.mywire.org/privkey.pem; # управляется Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # управляется Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # управляется Certbot
}
server {
if ($host = johnrose.mywire.org) {
return 301 https://$host$request_uri;
} # управляется Certbot
listen 80;
listen [::]:80;
server_name johnrose.mywire.org;
return 404; # управляется Certbot
}
Ответ или решение
Ваша проблема с тем, что Nginx не отображает изображение на странице summer.html, может возникать по нескольким причинам. Давайте рассмотрим все возможные аспекты и пути решения этого вопроса.
1. Структура директорий и доступ к файлам
Согласно вашему описанию, summer.html находится в корневом каталоге, а изображение summer.jpg – в подкаталогах images. Проверьте, правильно ли указаны пути к изображениям в HTML-коде. Ниже приведен ваш текущий код:
<img src="../images/summer.jpg" alt="Summer" width="400" height="300">
Путь "../images/summer.jpg" может не работать так, как вы ожидаете в контексте веб-сервера. Попробуйте изменить это на:
<img src="/images/summer.jpg" alt="Summer" width="400" height="300">
Это указывает веб-серверу искать изображение напрямую из корня вашего сайта, что более корректно для данной структуры.
2. Конфигурация Nginx
Ваш текущий конфигурационный файл Nginx выглядит правильно, однако целесообразно убедиться, что все пути по-прежнему актуальны. Директория /home/manager/www/html
должна содержать как summer.html, так и подкаталог images с summer.jpg. Убедитесь, что файлы находятся на своих местах, поскольку неправильное размещение может вызвать время ожидания или ошибки 404.
3. Брандмауэр и перенаправления
Если вы уже убедились в правильности путей и наличии файлов, следующий шаг – проверить настройки брандмауэра UFW и перенаправление портов на роутере. Убедитесь, что порты 80 и 443 открыты не только для HTTP и HTTPS трафика, но и что нет ограничений для вашего IP. Вы можете использовать следующую команду для проверки статуса UFW:
sudo ufw status
Проверьте, чтобы у вас было указано что-то вроде:
80 ALLOW Anywhere
443 ALLOW Anywhere
4. Логи Nginx
Никогда не забывайте проверять логи Nginx. Это один из самых мощных инструментов для отладки. Их можно найти в следующем месте:
/var/log/nginx/error.log
/var/log/nginx/access.log
С помощью команд:
tail -f /var/log/nginx/error.log
и
tail -f /var/log/nginx/access.log
вы можете увидеть, происходят ли какие-либо ошибки при попытке загрузить summer.jpg. Если изображения не удается найти, вы получите сообщение об ошибке 404, которое поможет локализовать проблему.
5. SSL-сертификат
Вы упомянули, что Certbot успешно создал сертификат. Убедитесь, что ваш браузер не блокирует загрузку ресурсов из-за проблем с сертификатом. При доступе через https проверьте, отображается ли значок замка в адресной строке Firefox. Если там есть предупреждения, возможно, ваш сертификат отозван или неправильно настроен.
Заключение
Проверьте каждый из указанных выше пунктов. Наиболее вероятная причина проблемы – это неправильно указанное местоположение изображения в HTML-коде, однако также следует проверить конфигурацию Nginx и статус брандмауэра. Если после выполнения всех шагов проблема не решится, следует дополнительно исследовать логи и настройки сетевого оборудования, чтобы исключить блокировку трафика. Удачи в устранении неполадок с вашими веб-ресурсами!