ssl proxys https web server is very slow

Maxim Dounin mdounin at mdounin.ru
Fri Jun 20 19:13:07 UTC 2014


Hello!

On Fri, Jun 20, 2014 at 10:14:54AM -0700, Mark Moseley wrote:

> On Fri, Jun 20, 2014 at 5:20 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> > Hello!
> >
> > On Fri, Jun 20, 2014 at 10:51:38AM +0200, Yifeng Wang wrote:
> >
> > > Hi, It's my first time using NGINX to proxy other web servers. I set a
> > > variable in location, this variable may be gotten in cookie or args. if
> > > I use it directly likes "proxy_pass https://$nodeIp2;", it will get the
> > > response for a long time. but if I hardcode likes "proxy_pass
> > > https://147.128.22.152:8443" it works normally. Do I need to set more
> > > cofiguration parameters to solve this problem.Below is the segment of my
> > > windows https configuration.
> > >
> > > http {
> > >     ...
> > >     server {
> > >        listen       443 ssl;
> > >        server_name  localhost;
> > >
> > >        ssl_certificate      server.crt;
> > >        ssl_certificate_key  server.key;
> > >
> > >        location /pau6000lct/ {
> > >             set $nodeIp 147.128.22.152:8443;
> > >             proxy_pass https://$nodeIp;
> >
> > Use of variables in the proxy_pass, in particular, implies that
> > SSL sessions will not be reused (as upstream address is not known
> > in advance, and there is no associated storage for an SSL
> > session).  This means that each connection will have to do full
> > SSL handshake, and this is likely the reason for the performance
> > problems you see.
> >
> > Solution is to use proxy_pass without variables, or use
> > preconfigured upstream{} blocks instead of ip addresses if you
> > have to use variables.
> >
> 
> So to prevent the heart attack I almost just had, can you confirm how I
> interpret that last statement:
> 
> If you define your upstream using "upstream upstream_name etc" and then use
> a variable indicating the name of the upstream in proxy_pass statement,
> that will *not* cause SSL sessions to not be reused. I.e. proxy_pass with a
> variable indicating upstream would not cause a performance issue.
> 
> Is that correct?

Yes.  If there is an upstream{} block, SSL sessions with upstream 
servers will be reused regardless of use of variables in the 
proxy_pass directive.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list