Nginx'i upstream SSL ile ters proxy olarak yapılandırma


40

Bir Nginx sunucusunu ters proxy olarak yapılandırmaya çalışıyorum, böylece istemcilerden aldığı https istekleri de ters akış sunucusuna https aracılığıyla iletiliyor.

İşte kullandığım yapılandırma:

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;
        }
    }
}

Yine de, ters proxy kullanarak bir dosyaya erişmeye çalıştığımda, bu ters proxy günlüklerine girdiğim hatadır:

2014/03/20 12:09:07 [hata] 4113079 # 0: * 1 SSL_do_handshake () başarısız oldu (SSL: hata: 1408E0F4: SSL yordamları: SSL3_GET_MESSAGE: beklenmeyen mesaj), SSL el sıkışma sırasında, müşteri: 192.168.1.2, sunucu: streaming.example.com, istek: "GET / yayıncılar/0/645/_teaser.jpg HTTP / 1.1", yukarı akış: " https://MYSERVER.COM:443/publishers/0/645/_teaser.jpg " , ana bilgisayar: "streaming.example.com"

Yanlış yaptığım bir fikrin var mı?


upstreamAynı hatayı alıp almadığınızı görmek için doğrudan WEBSERVER_IP kodunu proxy_pass yönergesine koyarak modülü kullanmadan denediniz mi?
Benoit

Hayır, bunu denemedim ama aşağıda açıklandığı gibi seçenek proxy_ssl_session_reuse off;beklendiği gibi çalışmasını sağladı.
Alex Flo

10
Lütfen SSLv3'ü desteklenen protokollerden kaldırın. Güvenli değil ve kullanmamalısınız: ssl_protocols SSLv3
user220703

Yanıtlar:


30

Hatanın ne olduğunu buldum, eklemem gereken proxy_ssl_session_reuse off;


1
Teşekkür ederim. Bu yapılandırmayı kullandıktan sonra hala sorun yaşayanlar için proxy_pass'da bir parametre olarak verilen URL'nin başında sadece http yerine https kullanmayı unutmayın. Aksi takdirde, nginx akış yönünde gönderilen trafiği şifrelemez ve yine de aynı hata iletisini alırsınız.
Lucio Mollinedo

1

Benim durumumda, proxy Cloudflare arkasındaki bir web sitesini tersine çevirmeye çalışıyordum. Ben de aynı hatayı aldım /var/log/nginx/error.log. Birçok çözüm denedim ve bu benim için çalıştı:

proxy_ssl_server_name on;

evet, şimdi 2019 bile olsa, bazı hizmetlerin barındırılan siteleri ayırt etmek için hala SNI'ye ihtiyacı var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.