База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку 503 Service Temporarily Unavailable в nginx при работе с 1С
- В этой теме 1 ответ, 2 участника, последнее обновление 6 минут назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
8 октября 2026 в 11:41 #38822
: <html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>nginx</center>
</body>
</html> -
8 октября 2026 в 11:41 #38823
Ошибка 503 Service Temporarily Unavailable от nginx означает, что nginx не может получить нормальный ответ от backend-сервера. В схеме с 1С backend обычно это:
— Apache или IIS;
— публикация 1С;
— сервер 1С, если публикация работает через веб-сервер;
— upstream, указанный в конфигурации nginx.Сам nginx запущен, но сервис за ним недоступен либо сам вернул ошибку 503.
## 1. Сначала посмотрите журнал nginx
Выполните:
Shell1sudo tail -n 100 /var/log/nginx/error.logИ отдельно журнал доступа:
Shell1sudo tail -n 100 /var/log/nginx/access.logОсобенно важны сообщения:
1С (Код)1connect() failed (111: Connection refused) while connecting to upstreamЭто означает, что на указанном порту не запущен Apache, IIS или другой backend.
1С (Код)1no live upstreamsОбычно означает ошибку в блоке
upstreamили недоступность всех серверов из группы.1С (Код)1upstream timed outBackend отвечает слишком долго. Для 1С это может быть зависшая публикация, проблемы с сервером 1С или слишком маленькие тайм-ауты.
1С (Код)1upstream prematurely closed connectionBackend принял соединение, но закрыл его до формирования ответа.
Пример команды, чтобы сразу отфильтровать важные ошибки:
Shell1sudo grep -iE "upstream|connect|refused|timed out|no live" /var/log/nginx/error.log | tail -n 50## 2. Проверьте backend напрямую, минуя nginx
Допустим, в конфигурации nginx указано:
1С (Код)1proxy_pass http://127.0.0.1:8080;Тогда выполните на сервере:
Shell1curl -I http://127.0.0.1:8080/Для публикации 1С, например:
Shell1curl -I http://127.0.0.1:8080/mybase/Если используется IP другого сервера:
Shell1curl -I http://192.168.1.10:8080/mybase/Результаты трактуются так:
—
Connection refused
На порту никто не слушает либо доступ запрещен firewall.—
Connection timed out
Проблема с сетью, маршрутизацией или firewall.—
404 Not Found
Backend доступен, но указан неправильный путь публикации.—
401 Unauthorizedили403 Forbidden
Backend доступен, но требуется авторизация либо запрещен доступ.—
503 Service Unavailable
Сам backend вернул 503. В этом случае проблему нужно искать не в nginx, а в Apache, IIS, публикации или сервере 1С.— HTML страницы 1С или ответ HTTP-сервиса
Связь между nginx и backend работает, нужно проверять маршрутизацию URL.## 3. Проверьте, слушается ли нужный порт
Для Apache, например, порт 8080:
Shell1sudo ss -ltnp | grep 8080Для порта 80:
Shell1sudo ss -ltnp | grep ':80'Для HTTPS:
Shell1sudo ss -ltnp | grep ':443'В нормальном случае будет что-то подобное:
1С (Код)1LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("httpd",pid=1234,fd=4))Если вывода нет, сервис на этом порту не запущен или слушает другой порт.
Проверьте службы:
Shell123sudo systemctl status nginxsudo systemctl status httpdsudo systemctl status apache2На разных Linux-дистрибутивах Apache называется по-разному:
Shell1sudo systemctl restart httpdили:
Shell1sudo systemctl restart apache2После перезапуска проверьте журнал:
Shell1sudo journalctl -u httpd -n 100 --no-pagerили:
Shell1sudo journalctl -u apache2 -n 100 --no-pager## 4. Проверьте конфигурацию nginx
Сначала выполните:
Shell1sudo nginx -tЕсли проверка успешна:
1С (Код)12syntax is oktest is successfulперечитайте конфигурацию:
Shell1sudo systemctl reload nginxПосмотрите фактически загруженную конфигурацию:
Shell1sudo nginx -TПолезно проверить, не используется ли другой конфигурационный файл или другой
proxy_pass.## 5. Типовая конфигурация nginx для публикации 1С
Если Apache слушает
127.0.0.1:8080, а публикация 1С называетсяmybase, конфигурация может выглядеть так:1С (Код)123456789101112131415161718192021222324server {listen 80;server_name 1c.example.ru;access_log /var/log/nginx/1c_access.log;error_log /var/log/nginx/1c_error.log;location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 60s;proxy_send_timeout 300s;proxy_read_timeout 300s;proxy_buffering off;}}После изменения:
Shell12sudo nginx -tsudo systemctl reload nginxОбратите внимание на завершающий
/:1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;}Для публикаций 1С лучше явно указывать одинаковый путь в
locationиproxy_pass. Неправильное сочетание путей может приводить к обращению не к той публикации и появлению ошибок 404 или 503.## 6. Если nginx и Apache находятся на разных серверах
Проверьте backend с сервера nginx:
Shell1curl -v http://192.168.1.10:8080/mybase/Проверьте доступность порта:
Shell1nc -vz 192.168.1.10 8080Если
ncне установлен:Shell1telnet 192.168.1.10 8080На сервере Apache проверьте, на каком адресе он слушает:
Shell1sudo ss -ltnp | grep 8080Если Apache слушает только:
1С (Код)1127.0.0.1:8080то к нему нельзя подключиться с другого сервера. Для межсерверной схемы Apache должен слушать сетевой адрес сервера, например:
Apache1Listen 192.168.1.10:8080или:
Apache1Listen 0.0.0.0:8080При этом порт 8080 желательно закрыть от внешнего доступа firewall и разрешить только IP сервера nginx.
## 7. Проверьте саму публикацию 1С
На сервере с Apache выполните запрос непосредственно к публикации:
Shell1curl -v http://127.0.0.1:8080/mybase/Проверьте наличие файла публикации:
Shell1sudo find / -name default.vrd 2>/dev/nullВ
default.vrdдолжны быть корректно указаны сервер, имя информационной базы и параметры публикации.Пример:
1С (Код)1234567<?xml version="1.0" encoding="UTF-8"?><point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"base="/mybase"ib="Srvr="localhost";Ref="mybase";"></point>Если используется файловая база, строка подключения будет другой. Если сервер 1С расположен отдельно, вместо
localhostдолжны быть указаны корректные параметры кластера и информационной базы.После изменения публикации перезапустите веб-сервер:
Shell1sudo systemctl restart httpdили:
Shell1sudo systemctl restart apache2## 8. Частая ошибка при использовании
proxy_passНеправильный вариант:
1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080;}В некоторых конфигурациях это может быть рабочим вариантом, но путь будет передаваться целиком и результат зависит от структуры публикации.
Более предсказуемый вариант:
1С (Код)123location /mybase/ {proxy_pass http://127.0.0.1:8080/mybase/;}Если nginx должен проксировать весь backend без изменения URL:
1С (Код)123location / {proxy_pass http://127.0.0.1:8080;}Если нужно заменить внешний путь
/api/на путь публикации/ut_demo/hs/:1С (Код)123location /api/ {proxy_pass http://127.0.0.1:8080/ut_demo/hs/;}Например, запрос:
1С (Код)1https://example.ru/api/testбудет передан backend как:
1С (Код)1http://127.0.0.1:8080/ut_demo/hs/test## 9. Проверьте SELinux
На CentOS, RedOS, AlmaLinux, Rocky Linux причиной блокировки подключения nginx к backend может быть SELinux.
Проверьте его состояние:
Shell1getenforceЕсли ответ:
1С (Код)1Enforcingразрешите nginx сетевые подключения:
Shell1sudo setsebool -P httpd_can_network_connect 1Проверьте сообщения SELinux:
Shell1sudo ausearch -m AVC -ts recentПосле этого снова проверьте:
Shell1curl -I http://127.0.0.1:8080/mybase/## 10. Проверьте firewall
Если backend находится на другом сервере, на нем должен быть разрешен порт, например 8080:
Shell1sudo firewall-cmd --list-portsРазрешить порт только для сервера nginx лучше адресно:
Shell1234sudo firewall-cmd --permanent--add-rich-rule='rule family="ipv4" source address="192.168.1.20" port protocol="tcp" port="8080" accept'sudo firewall-cmd --reloadГде
192.168.1.20это IP сервера nginx.## Наиболее вероятная причина
Если после запроса вы видите именно стандартную страницу:
XHTML123<center><h1>503 Service Temporarily Unavailable</h1></center>...<center>nginx</center>и в
error.logесть:1С (Код)1connect() failed (111: Connection refused) while connecting to upstreamто обычно исправление такое:
1. Узнать backend из
proxy_pass.
2. Проверить его командойcurlнапрямую.
3. Запустить Apache или IIS.
4. Проверить, что публикация 1С действительно слушает указанный порт.
5. Исправить адрес или порт вproxy_pass.
6. Выполнить:Shell12sudo nginx -tsudo systemctl reload nginxТочный диагноз по одной HTML-странице определить нельзя. Ключевая информация находится в
/var/log/nginx/error.logи в результате командыcurlк адресу изproxy_pass.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.