У меня проблема с конфигурацией NGINX. У меня есть два веб-сервера, работающих на серверах Windows. Какой из них вызывается извне с 443, а затем должен быть перенаправлен на сервер с 41001. Второй блок сервера должен называться FQDN, и nginx должен перенаправить его на FQDN.com/test. Внутренний и внешний.
На первом блоке сервера это занимает вечность, и кажется, что ничего не работает. Со вторым блоком сервера я получаю 404 назад.
Вот как выглядят мои конфигурации и журналы ошибок
сервер {
имя_сервера test.example.com;
вернуть 301 http://test.example.com/test$request_uri;
}
сервер {
слушать 443 ssl http2;
слушать [::]:443 ssl http2;
журнал доступа /var/log/nginx/test_service_access.log;
error_log /var/log/nginx/test_service_error.log;
ssl_certificate /etc/nginx/ssl/test.com.pem;
ssl_certificate_key /etc/nginx/ssl/test.key;
ssl_session_timeout 1 д;
ssl_session_tickets выключен;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-G> ssl_prefer_server_ciphers выключен;
местоположение/тест {
прокси_пасс https://10.10.10.10/test/;
}
client_max_body_size 0;
proxy_connect_timeout 90 с;
proxy_send_timeout 90 с;
proxy_read_timeout 90 с;
send_timeout 90;
}
сервер {
имя_сервера test2.example.com;
# Перенаправить все HTTP-запросы на HTTPS с ответом 301 Moved Permanently.
вернуть 301 https://test2.example.com$request_uri;
}
сервер {
слушать 443 ssl http2;
слушать [::]:443 ssl http2;
имя_сервера test2.example.com;
журнал доступа /var/log/nginx/test2_service_access.log;
error_log /var/log/nginx/test2_service_error.log;
ssl_certificate /etc/nginx/ssl/test2.example.com.pem;
ssl_certificate_key /etc/nginx/ssl/test2example.key;
# ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1 д;
ssl_session_tickets выключен;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-G>
ssl_prefer_server_ciphers выключен;
add_header Strict-Transport-Security max-age=15768000;
место расположения / {
# преобразователь 10.150.10.10 8.8.8.8;
прокси_пасс https://test2.example.com:41001/;
proxy_redirect https://test2.example.com:41001/ https://test2.example.com/;
client_max_body_size 0;
proxy_connect_timeout 90 с;
proxy_send_timeout 90 с;
proxy_read_timeout 90 с;
send_timeout 90;
}
}
}
Я посмотрел на error.logs и вот что получилось.
13.02.2022, 12:54:58 [ошибка] 2620#2620: *15 open() "/usr/share/nginx/html/DocuWare/Platform/LoginRedirect" не удалось (2: нет такого файла или каталога), клиент : xxx.xxx.xxx.xxx, сервер: , запрос: "GET /DocuWare/Platform/LoginRedirect?returnUrl=%2fdocuware%2fPlatform%2fWebClient%2f HTTP/2.0", хост: "test2.domain.com", реферер: "https://test.domain.com/docuware/Platform/WebClient/"
13.02.2022, 12:35:17 [ошибка] 2541#2541: *1 истекло время ожидания восходящего потока (110: время ожидания соединения истекло) при подключении к восходящему, клиент:
Что касается первой ошибки, я не понимаю, что именно не так
Я так понимаю, мне нужно определить апстрим для сервера с портом 41001, это правильно?
Я что-то упустил здесь?
ОБНОВИТЬ
Я настроил свою конфигурацию на наименьшую, чтобы проверить это. Как следует, моя конфигурация выглядит так
################################################### #####################
восходящие счеты {
сервер 10.120.50.11;
}
сервер {
слушать 80;
имя_сервера abacus.example.com;
вернуть 301 https://abacus.example.com$request_uri;
}
сервер {
слушать 443 ssl;
имя_сервера abacus.example.com;
ssl_certificate /etc/nginx/ssl/xxx.com.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_protocols TLSv1.2 TLSv1.3;
журнал доступа /var/log/nginx/abacus_service_access.log;
error_log /var/log/nginx/abacus_service_error.log;
место расположения / {
proxy_pass http://abacus;
}
}
################################################### ######################
вышестоящая документация {
сервер 10.120.50.10;
}
сервер {
слушать 80;
имя_сервера docuware.example.com;
вернуть 301 https://docuware.example.com$request_uri;
}
сервер {
слушать 443 ssl;
имя_сервера docuware.example.com;
ssl_certificate /etc/nginx/ssl/xxx.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_protocols TLSv1.2 TLSv1.3;
журнал_доступа /var/log/nginx/docuware_service_access.log;
error_log /var/log/nginx/docuware_service_error.log;
место расположения / {
proxy_pass http://docuware/docuware;
}
}
}
Когда я обращаюсь к серверу «abacus.example.com», я попадаю на домашнюю страницу IIS.
Итак, здесь я должен определить, что я захожу извне с 443 (HTTPS) и меня перенаправляют на порт 23001.
Если я обращаюсь к серверу «docuware.example.com/docuware», я получаю 404 — файл или каталог не найден.
Итак, здесь я должен как-то определить, что он может получить доступ к серверу с подпутью.
Во внутренней сети это работает без проблем.
Меня перенаправляют на "docuware.example.com/DocuWare/Platform/WebClient/ClientAccount/xxx".
Вы видите здесь, что я должен настроить? Я часами бился об это головой.