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

nginx varnish nginx php-fpm: настоящий ip для _SERVER ['REMOTE_ADDR'] php

Это конкретный вопрос.

Сервер Nginx (назовите его N1) прослушивает: 80 и пересылает на лак с помощью proxy_pass. Varnish прослушивает 127.0.0.1:6081 и пересылает на Nginx (N2) на 8080. N2 обращается к сокету php-fpm.

N1 <> V <> N2 <> P

N1:

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

    proxy_pass http://varnish/;
    proxy_redirect off;
}

В настоящее время

$ _SERVER ['REMOTE_ADDR'] == '127.0.0.1'

желанный

$ _SERVER ['REMOTE_ADDR'] == 'Настоящий удаленный адрес'

Это конкретный ответ. ;)

Вы можете добавить x-forwarded-for в N1, пропустить через varnish, а N2 - в fastcgi:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Затем в параметрах fastcgi:

fastcgi_param REMOTE_ADDR $http_x_forwarded_for;