Назад | Перейти на главную страницу

504 Тайм-аут шлюза на обратном прокси-сервере NGINX, даже если контейнер работает

У меня следующая настройка Docker:

Моя проблема в том, что при посещении сайта выдается ошибка 504. Я передаю переменные среды контейнеру WildFly, содержащему несколько VIRTUAL_HOST, LETSENCRYPT_HOST и LETSENCRYPT_EMAIL. Я попытался открыть порты, но это не помогло. Порт 8080 отображается в docker ps -a. Вес, max_fails и т. Д. Взяты из учебника, который я нашел в Интернете, потому что он не работал у меня, и я думал, что это исправит. Использование curl IP: 8080 дает успешный ответ.

Моя конфигурация Nginx в контейнере:

# wildfly.example.com
upstream wildfly.example.com {
                                # Cannot connect to network of this container
                                server 172.17.0.5:8080 weight=100 max_fails=5 fail_timeout=5;
}
server {
        server_name wildfly.example.com;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Do not HTTPS redirect Let'sEncrypt ACME challenge
        location /.well-known/acme-challenge/ {
                auth_basic off;
                allow all;
                root /usr/share/nginx/html;
                try_files $uri =404;
                break;
        }
        location / {
                return 301 https://$host$request_uri;
        }
}
server {
        server_name wildfly.example.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/wildfly.example.com.crt;
        ssl_certificate_key /etc/nginx/certs/wildfly.example.com.key;
        ssl_dhparam /etc/nginx/certs/wildfly.example.com.dhparam.pem;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/wildfly.example.com.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" always;
        include /etc/nginx/vhost.d/default;
        location / {
                proxy_pass http://wildfly.example.com;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $server_addr:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

P.S комментарий о том, что он не может подключиться к сети, существует, потому что он не обнаружил автоматически сервер, и мне пришлось вручную редактировать внутренний IP. Мой docker logs nginxcontainerid вывод:

2020/06/04 14:14:37 [error] 22247#22247: *6228 upstream timed out (110: Connection timed out) while connecting to upstream, client: IPHERE, server: wildfly.example.com, request: "GET / HTTP/2.0", upstream: "http://172.17.0.5:8080/", host: "wildfly.example.com"

Я не знаком с WildFly, но будет ли это приложение принимать запросы с заголовком wildlfy.example.com? Вы CURLing: 8080 в контейнере с IP-адресом, возможно, потребуется настроить сервер WildFly для приема запросов от самого домена. Ошибка 504 обычно заключается в том, что сервер просто отбрасывает ваши запросы из-за неправильной конфигурации или недоступности, что основано на вашем CURL. Я бы поискал проблемы внутри вашего контейнера WildFly.