ssl Ubuntu上的nginx和Windows上的nginx之间的不同行为

我在Ubuntu和Windows上都使用相同的版本(1.5.0)nginx。 两个nginx服务器在glassfish2.x之前作为反向代理工作。 glassfish2.x启用https监听器,而我的nginx服务器也有ssl证书文件。 我在Ubuntu上的nginx工作正常,但在Windows上没有。 GlassFish上的应用程序说,通过https通过nginxlogin到应用程序时,用户名和密码是错误的。 Ubuntu和Windows上两个nginx的configuration是一样的。

server { listen 443 ssl; server_name 127.0.0.1; ssl_certificate server.crt; ssl_certificate_key server.key; location / { proxy_pass https://10.112.18.110; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

我发现TLS版本与Chrome不同,Ubuntu上的nginx使用tlsv1.1和ACE_256_CBC,但windows上的nginx使用tlsv1.0和AES_128_cbc。 我不知道如何使windows上的nginx使用tlsv1.1。 如果我能做到这一点,我会再次testing他们看窗口上的nginx作品与否。

由于错误是由应用程序服务器报告的,这意味着SSL隧道已build立。 你应该在其他地方search你的问题。

您可以使用像Fiddler这样的HTTPdebugging代理来查看encryption的HTTPS对话。 比较两个Nginx服务器的Fiddler日志。

这是我的不好。 我发现一个应用程序被安装在我的本地机器(Windows)之前,并自动作为Windows服务启动。 这个应用程序正在侦听443端口号。 当我的Nginx的窗口启动时,它不报告错误,因为80端口号不被其他进程使用。 当使用HTTPS访问本地站点时,它只是与我的本地机器上的应用程序对话,而不是我的nginx。 我closures了应用程序,并在Windows上重新testingnginx,它工作正常。