Я думаю, что это сужает к этому:
По некоторым причинам имя хоста имеет значение для Nginx, когда это пытается выяснить, проксировать ли запрос. Если имя хоста установлено на git.example.com
запрос, кажется, не проходит, но если он установлен на 203.0.113.2
затем это проходит. Почему имя хоста имеет значение?
Зарегистрированный проблема с Nginx здесь
Когда я ввожу в IP-адресе обратного прокси непосредственно в мою панель браузера, это действительно выполняет перенаправление.
В этом случае я войду 203.0.113.2
и перенаправление к 203.0.113.1
выполняется.
При использовании URL, который разрешен через /etc/hosts
запись 203.0.113.2 git.example.com
"Добро пожаловать в страницу Ngnix" показан вместо страницы, которая следовала бы из перенаправления.
IIUC браузер сначала разрешит IP-адрес 203.0.113.2
на запись URL git.example.com
, и таким образом, оба должны привести к вызываемой конфигурации прокси, но это не то, что происходит.
Это - конфигурация:
server {
listen 80;
server_name git.example.com;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://203.0.113.1:3000;
}
}
Одна интересная вещь состоит в том, что я могу перейти к, например:
http://203.0.113.2/issues
Если я затем изменяюсь 203.0.113.2
с git.example.com
Я получаю Nginxs "404 не найденный" страница.
Вчера я потратил несколько часов, безуспешно пытаясь настроить nginx и gogs.
Что работало, так это установило запись A в конфигурации DNS доменного имени для субдомена git
, указывающего на правильный IP-адрес.