2016-03-04 91 views
1

我設置了一個負載均衡器,如果沒有https配置文件,它可以與https和http協同工作。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型 CONFIGS爲foo.combar.combaz.combar.combaz.com使用SSL證書從foo.com

回答

0

關於第一個問題,試試這個做重定向:

return 301 https://$host$request_uri; 

由於您配置了兩個服務器名稱,我更願意直接使用主機信息傳入的請求。見http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host

對於你的第二個問題,我什麼都不能說。你的粘貼配置看起來很好。確保不同的文件夾包含不同的證書;-)