Nginx setup
Настройка nginx
Cтатика на 443 порту
Без получения или обновления сертификатов
0. Установка nginx
sudo apt install nginx -y
1. Создать директории
mkdir -p /var/www/fake_site/html
Затем перенеси сюда файлы:
-
index.html→/var/www/fake_site/html/index.html -
nginx.conf→/var/www/fake_site/nginx.conf
2. Конфиг nginx
Содержимое /var/www/fake_site/nginx.conf
(подставь свой домен и пути к сертификатам):
server {
listen 443 ssl;
http2 on;
server_name example.com;
ssl_certificate /путь/к/fullchain.pem;
ssl_certificate_key /путь/к/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/fake_site/html;
index index.html;
# URL авторизации всегда отдаёт 403
location = /api/login {
return 403;
}
location / {
try_files $uri $uri/ =404;
}
}
Примечания:
-
http2 on;— новый синтаксис (nginx 1.25+). На старом nginx вместо этих двух строк пишиlisten 443 ssl http2;. - Блок
listen 80намеренно отсутствует: редирект с HTTP не нужен, а обновление сертификата идёт не через nginx на 80 порту. -
location = /api/login— точное совпадение, имеет наивысший приоритет, сработает независимо от порядка блоков.
3. Права доступа
Сертификаты читает главный процесс nginx (от root), поэтому их можно
держать где угодно, включая /root. Проверь только, что приватный ключ
закрыт от посторонних:
chmod 600 /путь/к/privkey.pem
Файлы сайта в /var/www доступны nginx по умолчанию — трогать права не нужно.
4. Подключить конфиг и запустить
# симлинк из общей папки в sites-enabled
ln -s /var/www/fake_site/nginx.conf /etc/nginx/sites-enabled/fake_site
# убрать дефолтный сайт, если мешает (конфликт server_name на 443)
rm -f /etc/nginx/sites-enabled/default
# проверка синтаксиса и перезагрузка
nginx -t && systemctl reload nginx
Если nginx -t ругается на open() ... failed (No such file or directory) —
симлинк ведёт на несуществующий файл: проверь, что nginx.conf реально лежит
по указанному пути и путь в ln -s абсолютный.
5. Проверка
# страница должна открываться
curl -skI https://твой-домен # ожидаем HTTP/2 200
# URL авторизации всегда закрыт
curl -skI https://твой-домен/api/login # ожидаем HTTP/2 403
Если /api/login отдаёт 404 вместо 403 — конфиг не перезагружен или запрос
уходит в другой server-блок. Проверь активные конфиги:
ls -l /etc/nginx/sites-enabled/
Открыть порт в файрволе (если используется ufw)
ufw allow 443/tcp
No Comments