nginx redireciona de volta para o IP do remote_addr

5

Estou tentando configurar o nginx 1.0.12 como um proxy para o apache 2.2.15, mas enfrentei um problema estranho. E não posso resolvê-lo pelo terceiro dia consecutivo. Eu tenho o site de teste c-craft.info e instalei o roundcube no subdiretório / roundcube. Então aqui está o problema:

Se você tentar abrir o link , receberá um redirecionamento estranho para seu próprio endereço IP. Portanto, parece que o nginx tenta baixar arquivos estáticos do remote_addr. Mas se você adicionar barra direita ao uri como roundcube / ele funcionará.

Outro exemplo: tente abrir o link - você também será redirecionado de volta para o seu próprio endereço IP e novamente o nginx tentará baixar os arquivos estáticos do remote_addr.

Interessante é que a conexão através do apache funciona bem:

c-craft.info:9091/roundcube

contra.lv:9091

Eu realmente preciso de seu conselho sobre como corrigi-lo, porque eu estou preso ... Aqui estão meus arquivos de configuração atuais:

nginx.conf

user nginx;
worker_processes 2;
pid /var/run/nginx.pid;

events {
    worker_connections 2048;
    use epoll;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] $request '
    '"$status" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

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

    client_max_body_size 64m;
    client_body_buffer_size 256k;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;

    gzip on;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

sites-enabled / default

server {
    listen 80 default;
    server_name _;
    server_name_in_redirect off;
    server_tokens off;
    access_log /var/log/nginx/default.access.log;
    error_log /var/log/nginx/default.error.log;

    location / {
        proxy_pass http://8*.***.**.**6:9091;
        include /etc/nginx/proxy.conf;
    }
}

sites-enabled / c-craft.info.conf

server {
    listen 80;
    server_name www.c-craft.info c-craft.info;
    server_name_in_redirect off;

    access_log /var/log/nginx/c-craft.info_access_log;
    error_log /var/log/nginx/c-craft.info_error_log;

    location / {
        proxy_pass http://8*.***.**.**6:9091;
        include /etc/nginx/proxy.conf;
    }

    location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar)$ {
        expires 30d;
        root /home/c-craft/public_html;
    }
}

sites-enabled / contra.lv.conf

server {
    listen 8*.***.**.**6:80;
    server_name www.contra.lv contra.lv;
    access_log /var/log/nginx/contra.lv_nginx_access_log;
    error_log /var/log/nginx/contra.lv_nginx_error_log;

    location / {
        proxy_pass http://8*.***.**.**6:9091;
        include /etc/nginx/proxy.conf;
    }

    location ~* ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar)$ {
        expires 30d;
        root /home/contra/public_html;
    }
}

proxy.conf

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 8k;
proxy_busy_buffers_size 64k;

No httpd.conf do apache eu tenho:

Listen 9091
UseCanonicalName Off
<VirtualHost 8*.***.**.**6:9091>

Agradeço antecipadamente por qualquer conselho que você tenha.

    
por Dmitry Rekun 24.02.2012 / 09:27

1 resposta

1

Suas diretivas proxy_pass devem ter barras à direita, por exemplo, da sua configuração padrão (emendada);

  server {
    listen 80 default;
    server_name _;
    server_name_in_redirect off;
    server_tokens off;
    access_log /var/log/nginx/default.access.log;
    error_log /var/log/nginx/default.error.log;

    location / {
        proxy_pass http://8*.***.**.**6:9091/;
        include /etc/nginx/proxy.conf;
        }
    }

Se você atualizar todas as suas declarações de proxy_pass , como acima, para incluir a barra final, você não precisará mais da barra no URL solicitado e, como tal, não deverá mais ver os retornos errados no seu próprio endereço IP como você descreve.

    
por 03.12.2014 / 15:34