如何在不指定证书文件的情况下代理到SSL后端?

如何在不指定证书文件的情况下代理到SSL后端?,ssl,nginx,playframework-2.1,reverse-proxy,Ssl,Nginx,Playframework 2.1,Reverse Proxy,我有一个Play2.1.x应用程序,它使用JKS对自己进行签名。它已经启动,正在运行,可以在domain.com:9443上使用,我需要用nginx代理它,因为在同一台机器上会有更多的应用程序(因此不能只在端口443上运行)。我添加了nginx配置,希望proxy\u passwithhttps可以让我将它代理给客户端 upstream backend-secure { server 0.0.0.0:9443; } server { listen 443 ssl;

我有一个Play2.1.x应用程序,它使用JKS对自己进行签名。它已经启动,正在运行,可以在
domain.com:9443
上使用,我需要用nginx代理它,因为在同一台机器上会有更多的应用程序(因此不能只在端口
443
上运行)。我添加了nginx配置,希望
proxy\u pass
with
https
可以让我将它代理给客户端

upstream backend-secure {
    server 0.0.0.0:9443;
}

server {
        listen 443 ssl;
        server_name domain.com;

        proxy_redirect          off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;


        location / {
                proxy_pass  https://backend-secure;
        }

}
不幸的是,当尝试打开
https://domain.com
在浏览器中,我只能登录
nginx/error.log
类似:

ssl握手时,在侦听ssl端口的服务器中未定义“ssl_证书”,客户端:123.123.123.123,服务器:0.0.0.0:443

是否有一种方法可以使其正常工作,或者唯一的选择是使用
http
后端为nginx SSL+使用通用方法


编辑:这是EV,多域证书,如果它重要的话。

代理的唯一选择是将证书放在nginx中。另一种选择是只通过TCP转发ngnix外部的连接,但您将无法获得任何X-Real-IP、X-Forwarded-For等内容。

第二种选择是不可接受的(应用程序中需要Real-IP),我将首先选择,但还有一个问题:我的应用程序应该用
jks
签名,然后我应该将
proxy\u pass
设置为
https
,对吗?有两种方法:你可以让代理对客户端说https,然后将其作为http转发到服务器(在可信网络内),或者你也可以作为https转发到服务器。后一种情况需要更多的资源,因为数据需要由代理再次加密并由服务器解密,而且速度会较慢,因为SSL连接设置需要更多的握手,但您可以在不受信任的网络上使用它。@SteffenUllrich如何配置后一种情况?简单地
proxy\u passhttps://..
不起作用(即,当我使用无效证书时,它仍然可以正常工作)。nginx版本1.6.2..Dup of