Nginx regra de reescrita para Zimbra

1

Estou tentando escrever uma regra de reconfiguração para o Zimbra, o que me permitirá usar um nome de host para acessar a interface da Web do Zimbra Desktop em vez do endereço IP e da porta.

Os URLs Zimbra padrão são assim:

http://127.0.0.1:port/?at=long-encrypted-user-id
http://127.0.0.1:port/zimbra/?at=long-encrypted-user-id
http://127.0.0.1:port/desktop/login.jsp?at=long-encrypted-user-id

Aqui está o que eu tenho até agora:

server {
    server_name hostname;
    location / {
            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_pass                       http://127.0.0.1:port/;
    }
}

Isso substitui apenas http://hostname por http://127.0.0.1:port no plano de fundo; Onde estou preso é adicionar o ?at=long-encrypted-user-id aos URLs. Alguém pode ajudar?

    
por Yusuf 13.11.2012 / 20:25

1 resposta

0

OK, então, se alguém precisar disso no futuro, eu teria que adicionar um if e uma reescrita:

if ($args !~* at=long\-encrypted\-user\-id) {
    rewrite ^/(.*)$ /$1?at=long-encrypted-user-id last;
}

e o bloco final do servidor se torna

server {
    server_name hostname;
    location / {
        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_pass                       http://127.0.0.1:port/;
        if ($args !~* at=long\-encrypted\-user\-id) {
            rewrite ^/(.*)$ /$1?at=long-encrypted-user-id last;
        }
    }
}

O Nginx avisa sobre o uso de if ( IfIsEvil ), mas não se você adicionar last à reescrita.

    
por 14.11.2012 / 17:48