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

bie*_*ior 12 ssl reverse-proxy nginx playframework-2.1

我有一个Play 2.1.x应用程序,它使用JKS签名.这取决于,运行和可用的domain.com:9443,我要代理其与nginx的,因为会出现在同一台机器上更多的应用程序,(因此不能只是口运行443),我增加了nginx的配置中,希望proxy_passhttps让我只是代理它到客户端

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

}
Run Code Online (Sandbox Code Playgroud)

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

服务器在SSL端口握手时定义没有"ssl_certificate",客户端:123.123.123.123,服务器:0.0.0.0:443

有没有办法让它工作或只有选项是使用nginx SSL +使用http后端的常用方法?

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

Ste*_*ich 4

代理的唯一选择是在 nginx 中拥有证书。另一种选择是仅将 TCP 转发到 ngnix 之外的连接,但是这样您将不会获得任何 X-Real-IP、X-Forwarded-For 等内容。

  • @SteffenUllrich 你将如何配置后者?简单地“proxy_pass https://..”不起作用(即当我使用无效的证书时它仍然可以正常工作)。nginx 版本 1.6.2.. (2认同)