Meu objetivo é escrever testes de Jasmine (uma estrutura de testes de JavaScript do BDD) que exercitem uma API de back-end criada por uma equipe separada.
Eu tenho um servidor Jasmine em execução na porta 9000. Esse código emite solicitações AJAX com um caminho relativo que começa com / web /. Eu quero que esses pedidos sejam direcionados para o backend.
Até agora, eu tenho um proxy reverso para um bloco upstream assim:
upstream backend {
server api-dev.example.com;
}
server {
...
location / {
proxy_pass http://localhost:9000;
...
}
location /web/ {
proxy_pass https://backend/web/;
...
}
}
O tráfego para '/' está funcionando bem, mas as solicitações do AJAX (por exemplo, para
http://localhost:50000/web/internal?action=network-statistics
) são 502'ing. Eu acredito que ele está atingindo o endpoint correto, mas há um erro SSL. O log de erros do Nginx parece confirmar minha suspeita:
2013/12/13 16:55:28 [error] 1885#0: *257 SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 127.0.0.1, server: localhost, request: "GET /web/internal/stats?action=network-statistics&request=null HTTP/1.1", upstream: "https://50.18.192.173:80/web/internal/stats?action=network-statistics", host: "localhost:50000", referrer: "http://localhost:50000/"
No entanto, se eu alterar o bloco upstream para:
upstream backend {
server api-dev.example.com:443;
}
... então eu recebo 404s. Eu poderia jurar que eu vi configurações semelhantes funcionar em outro lugar no Server Fault. Por exemplo, isso é uma questão muito parecida. o que estou perdendo? O que poderia dar errado? Desculpe se isso é vago, estou feliz em adicionar mais detalhes.