WordPress mostra apenas IPs internos

1

Ontem, eu configurei um "cluster" do WordPress.

Agora eu tenho um problema: WordPress e plug-ins apenas mostram os usuários como endereços IP internos, como 10.0.0.2.

Minha configuração nginx é:

  upstream backend {
  #ip_hash;
    server 10.0.0.3:80;
    server 10.0.0.2:8080;
   }

  server {
    listen 80;
    server_name bloggingsite.org;
    location / {

      proxy_pass http://backend;
        proxy_redirect     off;
            proxy_set_header   Host             $http_host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
#            client_max_body_size       10m;
#            client_body_buffer_size    128k;
#            proxy_connect_timeout      90;
#            proxy_send_timeout         90;
#            proxy_read_timeout         90;
#            proxy_buffer_size          4k;
#            proxy_buffers              4 32k;
#            proxy_busy_buffers_size    64k;
#            proxy_temp_file_write_size 64k;
    }
  }

Segundo bloco de servidores:

  server {
    listen 8080;
    server_name bloggingsite.org;
    root /var/www/;
real_ip_header    X-Real-IP;
    include /etc/nginx/fastcgi_php;
    location / {
      index index.php;

if (!-e $request_filename) {
#rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
#rewrite ^.*/files/(.*)$ /wp-content/blogs.php?file=$1 last;
#rewrite .*/files/(.*) /wp-includes/ms-files.php?file=$1;
# rewrite ^.+?(/wp-.*) $1 last;
# rewrite ^.+?(/.*\.php)$ $1 last;
 rewrite ^ /index.php last;
}
    }
  }
    
por Flo 26.10.2011 / 19:38

2 respostas

1

parece-me que você está usando um único nhostx vhost para, em seguida, inverter o proxy em vários servidores, todos executando nginx / php-fpm corretamente?

também parece que você está tentando usar o x-Real-IP de nginx - link

no entanto, você está perdendo um cabeçalho vital em seu segundo vhost nginx:

set_real_ip_from   10.0.0.0/24;

isto irá permitir que ele valide o cabeçalho ip real para que ele seja configurado com sucesso, sem ele realmente não mudará o IP real em seus logs de acesso e também seu aplicativo (neste caso wordpress), então seu segundo bloco vhost deve parecer mais com:

server {
    listen 8080;
    server_name bloggingsite.org;
    root /var/www/;
    set_real_ip_from   10.0.0.0/24;
    real_ip_header    X-Real-IP;
    include /etc/nginx/fastcgi_php;
    location / {
        index index.php;

        if (!-e $request_filename) {
            #rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
            #rewrite ^.*/files/(.*)$ /wp-content/blogs.php?file=$1 last;
            #rewrite .*/files/(.*) /wp-includes/ms-files.php?file=$1;
            # rewrite ^.+?(/wp-.*) $1 last;
            # rewrite ^.+?(/.*\.php)$ $1 last;
            rewrite ^ /index.php last;
        }
    }
}

você pode definir mais de um cabeçalho set_real_ip_from em seu vhost para permitir que hosts específicos confiem apenas no ip real, mas essa configuração assume que você pode adicionar mais servidores no futuro e é mais simples de manter

    
por 26.10.2011 / 19:51
0

O "servidor" verá as conexões do seu proxy em 10.0.0.2 no nível do TCP, onde ele pega os IP's - é por isso que você está vendo dessa maneira.

Tente olhar para o cabeçalho X-Forwarded-For ou encontre algo semelhante ao mod_remoteip no apache, que permite substituir o IP do cliente pelo valor dos cabeçalhos X-Forwarded-For. Eu pesquisei por tal funcionalidade (eu sei disso no apache com mod_remoteip) e encontrei este site: link

    
por 26.10.2011 / 19:42