Заголовок HTTP_REMOTE_ADDR исчезает - PullRequest
0 голосов
/ 14 сентября 2018

Есть wifi-сеть, роутер - Alcatel, интернет-соединение закрыто для пользователя, пока он не авторизуется на портале. Этот портал получает ip пользователя через заголовок HTTP_REMOTE_ADDR (т.е. 10.0.1.141), после аутентификации интернет-соединение будет открыто через RADIUS, но затем портал не получает HTTP_REMOTE_ADDR, вместо этого он получает HTTP_X_REAL_IP (т.е. 109.194.144.60 выглядит как DHCP), и больше нет информации о старом IP в любом другом заголовке.

Почему это происходит и как я могу получить оригинальный ip после авторизации пользователя?

Конфиги Nginx:

log_format  v_proxy 'local_time: $time_local;  host: $host;  http_x_real_ip:$http_x_real_ip;  '
                'http_x_forwarded_for:$http_x_forwarded_for; '
                'request: "$request";  status: $status;  body_bytes_sent: $body_bytes_sent;  '
                'http_referer: "$http_referer";  http_user_agent: "$http_user_agent";';


server {
    listen {{ env "CONTAINER_PORT" }};

    root    {{ env "PROJECT_DIR" }}/data;
    add_header X-Backend-Server $hostname;
    add_header X-Project {{ env "PROJECT_NAME" }};

    index index.php;

    port_in_redirect off;
    rewrite ^/(.*)/$ /$1 redirect;

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass    unix:/var/run/php/php7.0-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location / {
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php;
        }

        {{if env "CI_COMMIT_TAG"}}
            add_header Cache-Control s-maxage=3600;
        {{end}}
    }
}

upstream {{ env "FQDN" }} {
  {{$project_name := env "COMPOSE_PROJECT_NAME" }}
  {{range service $project_name}}server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;
  {{else}}server 127.0.0.1:65535; # force a 502{{end}}
}


server {
    server_name perm.{{ env "FQDN" }} msk.{{ env "FQDN" }} ekat.{{ env "FQDN" }};
    listen 80;
    rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
    listen 443;
    server_name perm.{{ env "FQDN" }} msk.{{ env "FQDN" }} ekat.{{ env "FQDN" }};


    location / {
        proxy_pass http://{{ env "FQDN" }};
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
    }

    access_log {{env "LOG_DIR" }}/{{env "PROJECT_DIR_SUFFIX"}}/access-ssl.log;
    error_log {{env "LOG_DIR" }}/{{env "PROJECT_DIR_SUFFIX"}}/nginx-error.log info;

}
...