2016-03-04 2 views
1

Я настраиваю балансировщик нагрузки, который работает с https и http, если нет файла конфигурации https.Конфигурация блока Nginx http и https

У меня есть несколько виртуальных хостов, которые пытаются перенаправить HTTP трафик HTTPS (тип 1), которые, как это:

server { 
    listen 80; 
    server_name example.xyz www.example.xyz; 
    return 301 https://$server_name$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name example.xyz; 

    ssl on; 
    ssl_certificate    /etc/nginx/ssl/example.xyz/fullchain.pem; 
    ssl_certificate_key   /etc/nginx/ssl/example.xyz/privkey.pem; 

    location/{ 
     proxy_pass        http://myapp1; 
     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_set_header  X-Forwarded-Proto  $scheme; 
    } 

} 

и у меня также есть один виртуальный хост для всех HTTP-трафика (типа 2) вот так.

upstream myapp1 { 
    server 8.8.8.8; 
    server 8.8.4.4 backup; 
} 

server { 
    listen 80 default_server; 
    location/{ 
     proxy_pass http://myapp1; 
     proxy_set_header Host $host; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

Эта установка не работает. У меня есть две проблемы

  1. В типа 1 виртуальные хосты не переадресацией на HTTPS.

  2. У меня есть типа 1 конфиги для foo.com, bar.com и baz.com но bar.com и baz.com используют SSL сертификат от foo.com

ответ

0

Для вашей первой задачи попробовать это сделать редирект:

return 301 https://$host$request_uri; 

Поскольку у вас настроено два сервера, я предпочитаю использовать информацию о хосте непосредственно из входящий запрос. См. http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host

Для вашей второй проблемы я ничего не могу сказать. Ваша вставленная конфигурация выглядит отлично. Убедитесь, что разные папки содержат разные сертификаты ;-)

Смежные вопросы