Eu tenho parcialmente este trabalho em um ambiente de teste aqui.
Plano de fundo
Temos o IIS6 servindo nosso CMS da intranet (o CMS é um plug-in ISAPI). Isso ocorre com a configuração do site no IIS para autenticação integrada do Windows (para personalização de segurança e de usuário).
Eu quero ativar a compactação gzip, mas devido a alguns dos recursos que ativamos em nosso CMS, não podemos fazer isso por meio das configurações de gzip do IIS (ele falha em todas as solicitações ao CMS, se o fizermos).
Atualmente, estou testando uma configuração com um proxy reverso nginx na frente do IIS fazendo o conteúdo gzipping.
O que funciona / o que não funciona?
A autenticação do IE6 / 7 através desta configuração ainda funciona bem, não tive que fazer alterações.
O Firefox, no entanto, precisava de uma mudança. Antes, sem o nginx, o Firefox tinha network.automatic-ntlm-auth.trusted-uris
definido para permitir que nosso servidor de intranet executasse a autenticação NTLM transparente. Uma vez que o nginx fizesse parte do mix, você seria repetidamente mostrado a caixa de login do site e suas credenciais nunca seriam aceitas. No entanto, adicionar o servidor de intranet a network.negotiate-auth.trusted-uris
corrigiu isso (para o Firefox no Windows, mas não no OS X). Parece que o método de autenticação pode ter mudado um pouco? Onde permitir a autenticação NTLM antes funcionou bem agora parece estar fazendo SPENGO?
Então a situação atual do nginx na frente do IIS6 me deixou:
Obras
- IE6 no XP
- IE7 no XP
- FF3.5 no XP (depois de alterar about: config)
Não funciona (credenciais nunca aceitas)
- FF3.5 no OS X
- Safari 3 no OS X
- Safari 4 no XP
- Blackberry 8700 (Simulador)
- Blackberry 9000 (simulador)
Adivinhe por que o meu (parcialmente) funciona e o seu não ... Possivelmente algo crucial para fazer proxy do handshake de autenticação que está na minha configuração, mas está faltando no seu? Como encaminhar o IP do cliente real? A seção relevante do servidor da minha configuração do nginx está abaixo se você quiser tentar.
server {
listen 80;
server_name testintralive;
location / {
proxy_pass http://localhost:81;
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_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_read_timeout 120;
}
}