Eu encontrei a solução:
Minha entrada para
proxy_set_header Host $host:$server_port;
originalmente estava faltando o $server_port
Fonte: link
Agora funciona! = D
Estou usando uma instância de teste do meu aplicativo em portas não padrão e gostaria de usar o nginx para redirecionar todas as solicitações http
recebidas para https
Aqui está minha configuração do nginx:
I tried the above but Cant seem to get it working : please see below
......
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 9000;
server_name iossapp1.com;
if ($scheme = 'http') {
rewrite ^ https://$server_name:9443$request_uri? permanent;
}
}
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
server {
listen 9443 ssl;
server_name iossapp1.com;
error_page 497 https://$host:9443$request_uri;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Referenciei o seguinte URL, mas o dosent parece ajudar: link
Para adicionar ao problema: o problema só aparece quando eu POSTAR um formulário para o servidor, aqui estão alguns exemplos do arquivo /var/log/nginx/access.log:
127.0.0.1 - - [07/Jan/2013:17:29:14 +0800] "GET /admin/logout HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/iosIndex" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
127.0.0.1 - - [07/Jan/2013:17:32:45 +0800] "POST /admin/editStaff HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/editStaff?staff.id=612" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
127.0.0.1 - - [07/Jan/2013:17:32:45 +0800] "GET /admin/staffIndex HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
127.0.0.1 - - [07/Jan/2013:17:35:45 +0800] "POST /admin/authenticate HTTP/1.1" 302 0 "https://iossapp1.com:9443/admin/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
127.0.0.1 - - [07/Jan/2013:17:35:45 +0800] "GET /admin/masterIndex HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
Em contraste, uma URL GET se comporta corretamente da seguinte forma:
127.0.0.1 - - [07/Jan/2013:17:36:21 +0800] "GET /admin/masterIndex HTTP/1.1" 200 2324 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11"
Eu notei o valor numérico após o código de resposta (302, 304) que é 0 quando o redirecionamento não será bem-sucedido, nos casos em que ele funciona, o valor numérico é diferente de zero. O que esse número representa?
Eu encontrei a solução:
Minha entrada para
proxy_set_header Host $host:$server_port;
originalmente estava faltando o $server_port
Fonte: link
Agora funciona! = D