2015-10-21 37 views
6

Tôi có máy chủ nginx chính quyết định tên máy chủ đến nơi định tuyến yêu cầu đến. Đối với hai máy chủ thứ cấp, máy chủ nginx chính này cũng đang giữ các chứng chỉ và khóa ssl. Máy chủ thứ 3 đang giữ chứng chỉ và khóa của riêng mình vì có quá trình cập nhật thường xuyên cho những máy chủ đó.nginx: chuyển tiếp kết nối ssl đến máy chủ khác

Câu hỏi của tôi bây giờ là cách tôi có thể định cấu hình máy chủ nginx chính để chuyển tiếp tất cả các yêu cầu tới máy chủ 3 đang đến trong máy chủ này. Tôi không thể sao chép chứng chỉ và khóa từ máy chủ 3 sang máy chủ chính vì chúng thay đổi thường xuyên.

overview servers and http(s) connections

Trả lời

2

Đây là cấu hình có thể hoạt động. Proxy thông qua tổng thể và chuyển tiếp mọi thứ tới Server3. Sử dụng cổng ssl nhưng tắt ssl.

server { 
    listen  443; 
    server_name myserver.mydomain.whatever; 

    ssl   off; 

    access_log  /var/log/nginx/myserver.access.log; 
    error_log  /var/log/nginx/myserver.error.og; 

    keepalive_timeout 60; 

    location/{ 
     set $fixed_destination $http_destination; 
     if ($http_destination ~* ^https(.*)$) 
     { 
      set $fixed_destination http$1; 
     } 

     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; 
     proxy_set_header Destination $fixed_destination; 
     # Fix the “It appears that your reverse proxy set up is broken" error. 
     # might need to explicity set https://localip:port 
     proxy_pass   $fixed_destination; 
     # force timeout if backend died. 
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
     proxy_read_timeout 90; 
     proxy_redirect http:// https://; 
    } 
} 
+0

Cảm ơn sự giúp đỡ của bạn. Tôi không hoàn toàn chắc chắn nếu tôi nhận được tất cả mọi thứ đúng. Tôi phải làm gì với định nghĩa máy chủ cho 'nghe 80; '? Chuyển hướng nó đến 443 trên máy chủ nginx chính và sau đó sử dụng ví dụ mã của bạn? Trong ví dụ của bạn, bạn chỉ định IP nào trong nội bộ yêu cầu được chuyển tiếp đến? –

+0

Tôi đã thử nghiệm cả hai cách. Hoặc tôi gặp lỗi trong nhật ký nginx nói '2015/10/22 11:34:21 [lỗi] 18229 # 0: * 57916 tiền tố URL không hợp lệ trong "", ứng dụng khách: xxx.xxx.xxx.xxx, máy chủ: my_server_name , yêu cầu: "GET/HTTP/1.1 $' hoặc trình duyệt trực tiếp nói rằng không có kết nối an toàn nào có thể được thiết lập và từ chối kết nối. –

+1

Có vẻ như không thể. Nginx không thực hiện chuyển tiếp proxy. [https và nginx làm proxy chuyển tiếp] (https://forum.nginx.org/read.php?2,15124,15256#msg-15256). – wolfhammer

Các vấn đề liên quan