Кажется, что очень простая конфигурация обратного прокси вызывает у меня головную боль. Основной файл конфигурации /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?
Спасибо.
Ваш server_name _;
не делает его сервером для приема всей почты домена по умолчанию. Из NGINX Имена серверов:
В примерах универсальных серверов странное имя
_
можно увидеть:server { listen 80 default_server; server_name _; return 444; }
В этом имени нет ничего особенного, это всего лишь одно из множества недопустимых доменных имен, которые никогда не пересекаются с каким-либо настоящим именем. Другие недопустимые имена, например
--
и!@#
могут быть использованы в равной степени.
И еще немного:
Обратите внимание, что невозможно указать имя для приема всей почты домена или сервер по умолчанию, используя
server_name
директива. Это свойство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;
}
}