Получение клиентского IP с помощью Azure CLI - Dockerised nginx + Flask + Gunicorn - PullRequest
0 голосов
/ 20 февраля 2019

Я успешно настроил мультиконтейнерный экземпляр из двух изображений в облаке Azure, но в своих журналах доступа nginx я получаю только то, что я считаю внутренними IP-адресами (10.240.xxx.xx).Это происходит уже после реализации реального пакета IP для nginx.

Я предполагаю, что экземпляры контейнеров маскируются за общим балансировщиком нагрузки, выделенным для конкретного пула.

Я создаю экземпляр экземпляра контейнера черезкоманда:

az container create

Здесь находится моя конфигурация nginx по умолчанию:

user  nginx;
worker_processes  1;

error_log  /preferred/path/nginx_error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format main '$proxy_add_x_forwarded_for - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"' ;

    access_log /preferred/path/nginx_access.log main;

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
}
daemon off;

и здесь конфигурация моего сайта:

server {    
    listen 80;

    set_real_ip_from xxx.xx.xxx.x/xx;

    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    location / {        
        try_files $uri @proxy_to_app;
    }
    location @proxy_to_app {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;

        proxy_redirect off;
        proxy_pass http://localhost:5000;
    }
}

Я устанавливаю реальный IP изоблачный пост.Пока что это казалось самым надежным и современным.

Кто-нибудь знает, что именно происходит?Можно ли как-нибудь получить реальный IP-адрес клиента через любой другой заголовок?Также возможно, что в настройке реального IP-адреса есть что-то неправильное, но вся документация, которую я нашел в Интернете, меня смущает.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

получается, что любой CI (экземпляр контейнера), сгенерированный Azure, является частью большего кластера kubernetes.В результате невозможно получить доступ к реальному IP-адресу клиента из-за настройки в службе, автоматически генерируемой в процессе CI.Действительно, я мог бы воспроизвести это поведение в своем собственном кластере kubernetes и получить исходный IP-адрес с помощью следующего ответа Как получить IP-адрес клиента из Azure Kubernetes с помощью службы LoadBalancer

0 голосов
/ 21 февраля 2019

Хорошо, вы можете быстро понять экземпляр контейнера Azure из Экземпляры контейнера Azure и оркестраторы контейнера .

Так же, как Docker, у контейнера есть IP, у хоста естьIP и будет также публичный IP, чтобы помочь контейнеру подключиться к Интернету.Хотя базовой инфраструктурой для экземпляров контейнеров управляет Azure, вам может понадобиться знать и просто знать общедоступный IP-адрес для подключения экземпляра контейнера.

Все, что вы можете увидеть из команды CLI, показано в Шаблон экземпляра контейнера Azure .Что касается IP, вам может быть показан только публичный IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...