Định cấu hình Nginx làm proxy ngược với SSL ngược dòng


40

Tôi cố gắng định cấu hình máy chủ Nginx làm proxy ngược để các yêu cầu https mà nó nhận được từ máy khách cũng được chuyển tiếp đến máy chủ ngược dòng thông qua https.

Đây là cấu hình mà tôi sử dụng:

http {

    # enable reverse proxy
    proxy_redirect              off;
    proxy_set_header            Host            $http_host;
    proxy_set_header            X-Real-IP       $remote_addr;
    proxy_set_header            X-Forwared-For  $proxy_add_x_forwarded_for;

    upstream streaming_example_com 
    {
          server WEBSERVER_IP:443; 
    }

    server 
    {
        listen      443 default ssl;
        server_name streaming.example.com;
        access_log  /tmp/nginx_reverse_access.log;
        error_log   /tmp/nginx_reverse_error.log;
        root        /usr/local/nginx/html;
        index       index.html;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_certificate /etc/nginx/ssl/example.com.crt;
        ssl_certificate_key /etc/nginx/ssl/example.com.key;
        ssl_verify_client off;
        ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers RC4:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;


        location /
        {
            proxy_pass  https://streaming_example_com;
        }
    }
}

Dù sao, khi tôi cố gắng truy cập một tệp bằng proxy ngược thì đây là lỗi tôi gặp phải trong nhật ký proxy ngược:

2014/03/20 12:09:07 [error] 4113079 # 0: * 1 SSL_do_handshake () không thành công (SSL: error: 1408E0F4: Các thói quen SSL: SSL3_GET_MESSAGE: tin nhắn bất ngờ) trong khi bắt tay SSL ngược dòng, client: 192.168.1.2, máy chủ: streaming.example.com, yêu cầu: "GET /publishers/0/645/_teaser.jpg HTTP / 1.1", ngược dòng: " https://MYSERVER.COM:443/publishers/0/645/_teaser.jpg " , máy chủ lưu trữ: "streaming.example.com"

Bất cứ ý tưởng những gì tôi đang làm sai?


Bạn đã thử mà không sử dụng upstreammô-đun bằng cách đặt trực tiếp WEBSERVER_IP vào chỉ thị proxy_pass để xem bạn có gặp lỗi tương tự không?
Benoit

Không, tôi đã không thử điều này nhưng như được giải thích bên dưới tùy chọn proxy_ssl_session_reuse off;làm cho nó hoạt động như mong đợi.
Alex Flo

10
Vui lòng xóa SSLv3 khỏi các giao thức được hỗ trợ. Nó không an toàn và bạn không nên sử dụng nó: ssl_prot Protocol SSLv3
user220703

Câu trả lời:


30

Tôi tìm thấy lỗi là gì, tôi cần thêm proxy_ssl_session_reuse off;


1
Cảm ơn bạn. Đối với những người ngoài kia vẫn có thể gặp sự cố sau khi sử dụng cấu hình này, hãy nhớ sử dụng https thay vì chỉ http ở đầu URL được cung cấp dưới dạng tham số trong proxy_pass. Nếu không, nginx sẽ không mã hóa lưu lượng được gửi lên thượng nguồn và bạn vẫn sẽ nhận được thông báo lỗi tương tự.
Lucio Mollinedo

1

Trong trường hợp của tôi, tôi đã cố gắng đảo ngược proxy một trang web đằng sau Cloudflare. Tôi đã nhận được cùng một lỗi trong /var/log/nginx/error.log. Tôi đã thử nhiều giải pháp và giải pháp này hiệu quả với tôi:

proxy_ssl_server_name on;

có, ngay cả năm 2019, một số dịch vụ vẫn cần SNI để phân biệt giữa các trang web được lưu trữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.