nginx + apache реальный IP на сайтах

F2
На сайте с 01.04.2008
Offline
110
1868

Ситуация такова. Переехал на новый сервер. Настроил связку nginx/1.8.0 + Apache/2.4.10 (php 5.6), установил модуль rpaf и настроил его. В логах апача все как положено пишуться реальные IP пользователей, а вот на сайтах все пользователи имеют один ip сервера.

До этого на старом сервере такие же настройки работали нормально и все определялось правильно. Виртуальные хосты для nginx формирую таким скриптом

#!/bin/sh

VIRTUALMIN_PATH='/etc/webmin/virtual-server/domains/'
NGINX_PORT=80
NGINX_CONFIG_PATH='/etc/nginx/sites-available/'
NGINX_LN_CONFIG_PATH='/etc/nginx/sites-enabled/'
NGINX_PRG_PATH='etc/init.d/'
APACHE_PORT=4000
#if [ -a /etc/nginx/nginx.conf ] then
# echo "nginx.conf found, generating vhost.conf..."
#else
# echo -e "nginx.conf NOT found, aborting...\E[31;40m[ ABORTED ]"; tput sgr0; exit
#fi

for FILE in `find $VIRTUALMIN_PATH -type f \! -name '*,v' \! -name "$HOSTNAME"`; do
for DOMAIN in `cat $FILE | grep ^dom=| cut -d= -f2`; do
IP=`cat $FILE|grep ^ip=|cut -d= -f2`;
#ALIAS=`cat $FILE|grep ^serveralias|grep ^serveralias|cut -d: -f2`;
ALIAS='www.'$DOMAIN
#echo $ALIAS
USER=`cat $FILE|grep ^user=| cut -d= -f2`;
DOCUMENT_ROOT=`cat $FILE|grep ^public_html_path=|cut -d= -f2`;
#echo "Converting servername $DOMAIN for file $FILE";
cat > "$NGINX_CONFIG_PATH$DOMAIN.conf" <<EOF
############### $DOMAIN ###############
server {
access_log /var/log/nginx/access/$DOMAIN.log;
error_log /var/log/nginx/error/$DOMAIN.log warn;
listen $NGINX_PORT;
server_name $DOMAIN $ALIAS;
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|mp3|bmp|rtf|js|swf|avi)$ {
root $DOCUMENT_ROOT;
}
location ~ /\.ht {
deny all;
}
location / {
limit_req zone=one burst=5;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 80 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 10s;
proxy_redirect http://www.$DOMAIN:$APACHE_PORT http://www.$DOMAIN;
proxy_redirect http://$DOMAIN:$APACHE_PORT http://$DOMAIN;
proxy_pass http://$IP:$APACHE_PORT/;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
}
EOF
if [ ! -e $NGINX_LN_CONFIG_PATH$DOMAIN.conf ]; then
ln -s $NGINX_CONFIG_PATH$DOMAIN.conf $NGINX_LN_CONFIG_PATH$DOMAIN.conf
fi
done
done

Как это можно исправить? Пробовал крутить настройки rpaf ни один из вариантов не работает

AhmaServers
На сайте с 07.04.2015
Offline
53
#1

покажите конфиг модуля rpaf.conf

и nginx.conf

За гранью сложного скрываются простые (http://qweruba.ru) вещи
F2
На сайте с 01.04.2008
Offline
110
#2

nginx.conf

user www-data;
worker_processes 2;
timer_resolution 100ms;

#access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 512;
}
http {
limit_req_zone $binary_remote_addr zone=one:50m rate=2r/s;
include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;

sendfile on;
tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;

server_names_hash_bucket_size 512;
gzip on;
gzip_min_length 1100;
gzip_buffers 64 8k;
gzip_comp_level 3;
gzip_http_version 1.1;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/css;

server_tokens off;

include /etc/nginx/sites-available/*;

rpaf.conf

<IfModule rpaf_module>
RPAFenable On

# When enabled, take the incoming X-Host header and
# update the virtualhost settings accordingly:
RPAFsethostname On

# Define which IP's are your frontend proxies that sends
# the correct X-Forwarded-For headers:
#RPAFproxy_ips 127.0.0.1 ::1
RPAFproxy_ips 151.80.***.***
# Change the header name to parse from the default
# X-Forwarded-For to something of your choice:
#RPAFheader X-Real-IP
RPAFheader X-Forwarded-For
</IfModule>
L
На сайте с 13.01.2011
Offline
125
#3
Контакты-icq 535609 ()
AhmaServers
На сайте с 07.04.2015
Offline
53
#4

flint2000,

В консоли ssh a2dismod rpaf

В nginx.conf в секцию http {


# Proxy settings
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

В rpaf.conf

RPAFproxy_ips 127.0.0.1 151.80.***.***

Для debian/ubuntu

service nginx reload

service apache2 reload

для centos

service http restart

service nginx reload

и проверяйте должно работать

F2
На сайте с 01.04.2008
Offline
110
#5

AhmaServers, И с таким конфигом не работает

AhmaServers
На сайте с 07.04.2015
Offline
53
#6
flint2000:
AhmaServers, И с таким конфигом не работает

А модуль rpaf точно включен?

F2
На сайте с 01.04.2008
Offline
110
#7
AhmaServers:
А модуль rpaf точно включен?

150% включен

L
На сайте с 13.01.2011
Offline
125
#8

ну я же дал ссылку выше - и там написано что он толком не работает - поставьте другой.

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 ipсервера
F2
На сайте с 01.04.2008
Offline
110
#9

Logger, Настраивал тоже, не хочет работать.

---------- Добавлено 22.10.2015 в 15:35 ----------

Logger, Все. Спасибо. Настроил и все заработало

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий