🐧 Linux  ·  20 вопросов  ·  ~45 мин  ·  ⏱ Таймер 45:00  ·  Сложный  ·  👥 4 прошли

Nginx и публикация сайта

Nginx выбирает server и location до чтения файла или обращения к upstream. Поэтому одинаковый код 404 или 502 может возникнуть из разных механизмов. Тест требует читать конфигурацию, заголовки и журналы, различать root и alias и безопасно применять TLS и reverse proxy.

Отвечено: 0 из 20
--:--
0%
💡 Инструкция: Выбери один ответ из четырёх. На 20 вопросов отведено 45 минут. Не меньше половины заданий требуют разобрать команды, сценарий Bash, конфигурацию или диагностический вывод. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и краткий разбор каждого решения.
Вопрос 1 из 20
На одном listen 80 несколько server-блоков, но Host не совпал ни с одним server_name. Какой блок выберет Nginx?
BashТерминал
server { listen 80 default_server; return 444; }
server { listen 80; server_name app.example; root /srv/app; }
Вопрос 2 из 20
Как проверить конкретный server_name без изменения DNS?
BashТерминал
curl -v -H 'Host: app.example' http://127.0.0.1/
Вопрос 3 из 20
Что делает listen 443 ssl;
Вопрос 4 из 20
Какой редирект сохраняет путь и параметры запроса при переходе на HTTPS?
BashТерминал
server {
  listen 80;
  server_name app.example;
  return 301 https://$host$request_uri;
}
Вопрос 5 из 20
Почему wildcard server_name *.example.com не совпадает с самим example.com?
Вопрос 6 из 20
Nginx настроен отправлять запросы на 127.0.0.1:8000 и получает connection refused. Что это чаще означает?
BashТерминал
sudo ss -lntp 'sport = :8000'
curl -v http://127.0.0.1:8000/health
Вопрос 7 из 20
Чем обычно отличаются 502 и 504 при reverse proxy?
Вопрос 8 из 20
Что делает proxy_set_header Host $host?
BashТерминал
location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://app_backend;
}
Вопрос 9 из 20
Почему нельзя безусловно передавать upstream внешний $http_x_forwarded_for как истинный адрес клиента?
Вопрос 10 из 20
В location /api/ указано proxy_pass http://backend/;. Как изменится URI /api/users?
BashТерминал
location /api/ {
  proxy_pass http://backend/;
}
Вопрос 11 из 20
В location /assets/ задан root /srv/site;. Какой путь соответствует URI /assets/app.css?
BashТерминал
location /assets/ { root /srv/site; }
Вопрос 12 из 20
В location /media/ задан alias /srv/uploads/;. Какой путь соответствует /media/a.jpg?
Вопрос 13 из 20
Файл имеет 0644, но Nginx получает Permission denied. Что ещё проверить?
BashТерминал
namei -l /srv/site/assets/app.css
ps -o user= -C nginx
Вопрос 14 из 20
Зачем серверу отправлять fullchain, а не только leaf-сертификат?
Вопрос 15 из 20
Какие права разумны для приватного TLS-ключа?
BashТерминал
stat -c '%U %G %a %n' /etc/ssl/private/app.key
Вопрос 16 из 20
Что нужно сделать перед nginx -s reload или systemctl reload nginx?
BashТерминал
sudo nginx -t && sudo systemctl reload nginx
Вопрос 17 из 20
Почему graceful reload обычно предпочтительнее stop/start?
Вопрос 18 из 20
Nginx не стартует: bind() to 0.0.0.0:80 failed (98: Address already in use). Что проверить?
BashТерминал
sudo ss -lntp 'sport = :80'
sudo lsof -nP -iTCP:80 -sTCP:LISTEN
Вопрос 19 из 20
Какой журнал полезнее всего при различении времени Nginx и upstream?
Bashnginx.conf
log_format upstream '$request_id $status $request_time '
                    '$upstream_addr $upstream_status $upstream_response_time';
Вопрос 20 из 20
После reload сайт отвечает старой конфигурацией. Какой факт проверить?
BashТерминал
sudo nginx -T 2>&1 | less
journalctl -u nginx --since '5 minutes ago'

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe)

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу