我在预打包的jetty服务器前设置了http反向代理。 jetty服务器是一个预配置的应用程序,并不是很灵活。此Jetty服务器仅接受SSL请求。
我让nginx配置为使用自己的SSL证书侦听443的SSL流量。然后在nginx后面,我在其他机器上运行jetty服务器的anohter服务器,它有自己的证书,在443端口。
我的Nginx配置如下所示,
server
{
listen 443;
server_name _;
ssl on;
ssl_certificate cc_net.pem;
ssl_certificate_key cc_net.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location /rest/api/box/get_user_info {
proxy_pass https://fssdemo.cc.net/rest/api/box/get_user_info?external=true&server=$host;
}
location /rest/api/box/is_running {
proxy_pass https://fssdemo.cc.net/rest/api/box/is_running;
}
location / {
root html;
index index.html index.htm;
}
}
如果我在https上点击我的码头服务器,我会得到一个502,糟糕的网关。
错误日志报告:
2014/04/10 08:52:48 [错误] 648#0:* 1 SSL_do_handshake()失败(SSL:错误:100AE081:椭圆曲线例程:EC_GROUP_new_by_curve_name:未知组错误:1408D010:SSL例程:SSL3_GET_KEY_EXCHANGE: EC lib)当SSL握手到上游时,客户端:172.16.9.140,服务器:_,请求:“GET / rest / api / box / is_running HTTP / 1.1”,上游:“https://< 54.221.108.189:443> ; / rest / api / box / is_running“,主持人:”ext.cc.net“
我把<>在上面的错误日志中,我不允许用IP发布链接。
从上面我可以看出,这是说从我的代理到我的码头主机的ssl连接失败了。
如果我直接浏览目标,在https和端口443上,它可以正常工作。
我想知道其中一个是否可以解决代理问题?但是,当连接到目标时,我如何强制nginx使用ssl?
由于
答案 0 :(得分:2)
错误可能是你的openssl宣布的椭圆曲线比它支持的更多,然后服务器选择了一个不受支持的曲线。见https://bugzilla.redhat.com/show_bug.cgi?id=1019390。 您需要升级openssl。