Кажется, очень простая конфигурация обратного прокси вызывает у меня головную боль.
Основной файл конфигурации /etc/nginx/nginx.conf имеет
"include /etc/nginx/conf.d/*.conf;"
Затем у меня есть два файла conf в conf.d:
default-1.conf
и default-2.conf
Первый файл имеет:
server {
# HealthCheck
server_name _;
listen 0.0.0.0:443 ssl ;
location = /health.html {
root /usr/share/nginx/html;
}
}
А второй файл содержит дополнительные прокси-операторы, такие как
server {
listen 0.0.0.0:443 ssl ;
server_name www.example2.com;
...
location / {
set $backend "some-backend";
proxy_pass $scheme://$backend;
}
}
. Когда есть только default-1.conf находится в conf.d /,
curl -k https: //localhost/health.html
работает.
Если я также поместил default-2.conf в conf.d /, то та же команда curl выдаст ошибку 404 Not Found. Я также не вижу ошибок в error.log. Что я делаю не так?
Как мне узнать правила, применяемые при создании окончательного файла conf с использованием этих нескольких меньших файлов conf?
Спасибо.
Ваше имя_сервера _;
не делает его сервером для приема всей почты домена по умолчанию. Из NGINX Имена серверов :
В примерах серверов для приема всех сообщений можно увидеть странное имя
_
:server { слушаем 80 default_server; название сервера _; return 444; }
В этом имени нет ничего особенного, это всего лишь одно из множества недействительных доменных имен, которые никогда не пересекаются с настоящим именем. В равной степени могут использоваться и другие недопустимые имена, такие как
-
и! @ #
.
И еще немного:
Обратите внимание, что нет способа указать универсальный имя или по умолчанию сервер с помощью директивы
имя_сервера
. Это свойствоlisten
, а не директиваserver_name
.
Ваш default-1.conf
должен иметь:
server {
# HealthCheck
listen 0.0.0.0:443 ssl default_server;
server_name _;
location = /health.html {
root /usr/share/nginx/html;
}
}