O nginx pode escutar na porta 80, mas enviar upstream para backend usando SSL em 443?

6

Para conformidade com PCI, meu aplicativo é forçado a usar uma conexão segura / criptografada entre o servidor proxy reverso e o servidor de aplicativo de backend, enquanto a conexão ao proxy reverso está na porta 80, ou seja, o proxy reverso precisa agir como Conversor http-para-https.

Um diagrama simples:

IIS7 < --- porta 443 --- nginx < ---- porta 80 ---- Internet

Estou avaliando usando o nginx sobre o squid para isso, e é isso que eu tenho no meu nginx.conf até agora:

worker_processes  1;
events {
    worker_connections  1024;
}

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

    sendfile        on;
    keepalive_timeout  65;

    upstream backend {
        server mybackendserver:443;
    }

    server {
        server_name www.mysite.com
        listen       80;
        ssl on;
        ssl_certificate /etc/nginx/server.crt;
        ssl_certificate_key /etc/nginx/server.key;
        ssl_verify_client off;
        location = / {
                    proxy_pass  https://backend;
                proxy_set_header Host $http_host;
            proxy_set_header X_FORWARDED_PROTO https;
        }

    }

}

O texto acima: "400 Solicitação incorreta A solicitação HTTP simples foi enviada para a porta HTTPS" quando eu navego até www.mysite.com.

Onde estou indo errado? Isso é mesmo factível? O nginx é melhor que o squid para esse propósito?

Obrigado antecipadamente, G

    
por G Chuk 08.08.2011 / 21:29

1 resposta

12

proxy_pass é capaz de fazer proxy para HTTPS, isso não é um problema.

Você tem um erro em sua configuração. Remover linhas

ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_verify_client off;

Eles estão ativando o servidor SSL no lado Nginx, o que significa que o Nginx espera conexão SSL na porta 80. Como os navegadores enviam HTTP comum para a porta 80, o Nginx reclama "400 Solicitação incorreta A solicitação HTTP simples foi enviada para a porta HTTPS"

    
por 09.08.2011 / 09:08