Попробуйте разделить конфигурацию на два сервера:
server {
listen *:80; # port http
set $https off;
location / {
proxy_pass http://dutybalancer;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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;
}
}
server {
listen *:443 ssl; # port https
set $https on;
... тут немного сертификатов
location / {
proxy_pass https://dutybalancer_ssl;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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;
}
}
Проблема в том, что nginx своеобразно обрабатывает 'if' в конфигурации (
wiki.nginx.org/IfIsEvil).