Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 15060|Отговор: 0

[Уеб] Front-end nginx и бекенд nginx сървърите записват IP адреса на оригиналния клиент

[Копирай линк]
Публикувано в 3.11.2014 г. 9:53:23 ч. | | |

Този модул ни позволява да променяме стойността на IP адреса на клиента в заглавието на заявката на клиента (например X-Real-IP или X-Forwarded-For).

    Тази функция е много полезна за Nginx сървъри, ако Nginx работи зад някои проксита за балансиране на натоварването от Layer 7, тъй като локалният IP адрес на клиентската заявка (т.е. адресът на заявката на клиента) се добавя към IP адреса на клиента при преминаване през Layer 7 прокси, така че бекендът Nginx да може да получи IP адресната стойност на клиента. Модулът не е инсталиран по подразбиране, така че ако искате да го използвате, трябва да добавите опцията --with-http_realip_module при компилиране на инсталацията.

    Причината за използването на този модул е, че позволява на фоновия сървър да записва IP адреса на оригиналния клиент.

Пример за конфигурация
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
real_ip_header X-Real-IP;


Пръсти    Ред

   Модулът предоставя само две инструкции.

Име на инструкцията: set_real_ip_from

Функция: Посочването на доверен адрес чрез тази команда ще бъде заменено с точен IP адрес. Доверени Unix сокети също могат да се използват от версия 0.8.22 нататък. IP сетът тук се отнася до фронтендаNginxЛакилиКалмарнаIPАдрес.

Синтаксис: set_real_ip_from [адреса| CIDR|" Unix:"]

Стойност по подразбиране: няма

Среда за използване: http, сървър, местоположение

Име на инструкцията: real_ip_header

Функция: Тази команда се използва за задаване на коя заглавна точка да се използва за замяна на IP адреса. Ако се използва X-Forwarded-For, модулът ще замени IP адреса на фронтенд проксито с последния IP адрес в заглавието X-Forwarded-For.

Синтаксис: real_ip_header [X-Real-IP| X-Forwarded-For]

Стойност по подразбиране: real_ip_header X-Real-IP

Среда за използване: http, сървър, местоположение

Случаи на употреба   

    В следващия пример нашата среда е следната: има два Nginx сървъра – единият е фронтендът, другият бекендът, фронтендът Nginx се използва като прокси, а бекендът Nginx се използва за достъп до страници, а има и клиент със следния IP адрес:

  

    Фронтенд Nginx: 192.168.7.10

    Backend Nginx: 192.168.1.15

    Клиент хост: 218.239.201.36

    Конфигурацията на Nginx на фронтенда изглежда така:

server {
  слушай 80;
  server_name www.xx.com;

Местоположение / {
    root html;
    индекс index.html index.htm;
Чарсет UTF-8;
  }

Местоположение /865 {
    proxy_pass http://192.168.3.139:80/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Водещ $host;
    proxy_redirect отстрани;
  }

……
}

Конфигурацията на Nginx за бекенда е следната:

server {
  слушай 80;
  server_name местен водещ;

  Местоположение / {
    корен /var/www/html;
    индекс index.html index.htm;
  }

Достъп до теста

    Ако достъпим http://www.xx.com/865, няма проблем, може да е нормален достъп, логът на достъпа е следният:

    Логове от frontend Nginx:

218.239.201.36 - - [30/авг/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Логове от бекенд Nginx:

192.168.7.10 - - [30/авг/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Виждаме, че логовете на бекенд Nginx не записват IP адреса на оригиналния клиент, а IP адреса на фронтенд Nginx.

    Ако промените конфигурацията на фоновия Nginx сървър да:

server {
  слушай 80;
  server_name местен водещ;
  set_real_ip_from 192.168.3.0/24;
set_real_ip_from 100.100.0.0/16;
  real_ip_header X-Real-IP;

  Местоположение / {
    root html;
    индекс index.html index.htm;
  }

    ……
}

След това правим теста за достъп отново:

    Логове от frontend Nginx:

218.239.201.36 - - [30/авг/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

     Логове от бекенд Nginx:

218.239.201.36 - - [30/авг/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

Вижда се, че този път фонът записва IP адреса на клиента.







Предишен:nginx proxy режим, получаване на реалния IP адрес на клиента
Следващ:Дискуз! X3.1 Всички версии на X3 заобикалят разрешение за изтегляне на прикачени файлове без кредити Уязвимост при неограничено изтегляне
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com