Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 15623|Відповідь: 0

[Веб] Nginx на фронтенді та Apache на бекенді отримують реальну IP-адресу користувача

[Копіювати посилання]
Опубліковано 03.11.2014 09:46:05 | | |
Останнім часом він був загаломАпачі-2.2 таАпачі-2.4 додати до "Пакет установки LNMP з одним кліком",НгінксЯк фронтенд, Apache може отримати лише IP-адресу фронтенду Nginx (127.0.0.1), але не справжню IP-адресу користувача.
Nginx конфігурується так:
  1. location / {
  2.         try_files $uri @apache;
  3.         }

  4. location @apache {
  5.         internal;
  6.         proxy_pass http://127.0.0.1:8080;
  7.         include proxy.conf;
  8.         }

  9. location ~ .*\.(php|php5)?$  {
  10.         proxy_pass http://127.0.0.1:8080;
  11.         include proxy.conf;
  12.         }
Копія коду
  1. proxy_connect_timeout 300s;
  2. proxy_send_timeout 900;
  3. proxy_read_timeout 900;
  4. proxy_buffer_size 32k;
  5. proxy_buffers 4 64k;
  6. proxy_busy_buffers_size 128k;
  7. proxy_redirect off;
  8. proxy_hide_header Vary;
  9. proxy_set_header Accept-Encoding '';
  10. proxy_set_header Referer $http_referer;
  11. proxy_set_header Cookie $http_cookie;
  12. proxy_set_header Host $host;
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Копія коду
В Apache є 2 модулі для отримання реальних IP-адрес:
mod_rpaf: Підтримується Apache-2.2; Apache-2.4 не підтримується. В інтернеті є багато навчальних матеріалів
mod_remoteip: Apache-2.4 постачається з модулями; Підтримка Apache-2.2;Рекомендую
Apache-2.2.25
mod_rpaf модуль
  1. wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
  2. tar -xzvf mod_rpaf-0.6.tar.gz
  3. cd mod_rpaf-0.6/
  4. /usr/local/apache/bin/apxs  -i -c -n mod_rpaf-2.0.slo mod_rpaf-2.0.c
Копія коду
Add Apache configuration
  1. vi  /usr/local/apache/conf/httpd.conf
  2. Include conf/extra/httpd-rpaf.conf
  3. vi /usr/local/apache/conf/extra/httpd-rpaf.conf

  4. LoadModule rpaf_module        modules/mod_rpaf-2.0.so
  5. RPAFenable On
  6. RPAFsethostname On
  7. RPAFproxy_ips 127.0.0.1 10.8.0.110 # 代理服务器的ip地址(记得做相应修改)
  8. RPAFheader X-Forwarded-For
Копія коду
Примітка: Додайте IP-адресу проксі-сервера після RPAFproxy_ips і заповніть кілька
Тест
  1. # /usr/local/apache/bin/apachectl -t
  2. # /usr/local/apache/bin/apachectl restart
  3. # 看日志
Копія коду
mod_remoteip
Конфігурація mod_remoteip в Apache-2.2 виглядає так:
Установки
  1. wget https://github.com/ttkzw/mod_remoteip-httpd22/raw/master/mod_remoteip.c
  2. /usr/local/apache/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c
Копія коду
Змініть профіль:
  1. vi /usr/local/apache/conf/httpd.conf
  2. Include conf/extra/httpd-remoteip.conf
  3. vi /usr/local/apache/conf/extra/httpd-remoteip.conf
  4. LoadModule remoteip_module modules/mod_remoteip.so
  5. RemoteIPHeader X-Forwarded-For
  6. RemoteIPInternalProxy 127.0.0.1
Копія коду
Тест:
  1. # /usr/local/apache/bin/apachectl -t
  2. # /usr/local/apache/bin/apachectl restart
  3. # 看日志
Копія коду
Конфігурація Apache-2.4 mod_remoteip окрім вищезазначеного (модуль зі своїм mod_remoteip не обов'язково встановлювати), також потрібно змінити формат логу (довго перекидати)
  1. LogFormat "%h %a %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
  2. LogFormat "%h %a %l %u %t "%r" %>s %b" common
  3. LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedi
Копія коду

Додайте %a до формату журналу





Попередній:Я чув, що Ду Нян досі може грати так! Ти тряси! Потисни!
Наступний:Режим nginx proxy, отримати реальну IP-адресу клієнта
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com