Ubuntu 上的 nginx 与 Windows 上的 nginx 之间的 SSL 不同行为

Ubuntu 上的 nginx 与 Windows 上的 nginx 之间的 SSL 不同行为

我在 Ubuntu 和 Windows 上使用相同版本(1.5.0)的 nginx。这两个 nginx 服务器在 glassfish2.x 前面作为反向代理。glassfish2.x 启用了 https 侦听器,我的 nginx 服务器也有 ssl 证书文件。我在 Ubuntu 上的 nginx 工作正常,但在 Windows 上的 nginx 却不行。当通过 nginx 通过 https 登录应用程序时,GlassFish 上的应用程序显示用户名和密码错误。Ubuntu 和 Windows 上的两个 nginx 的配置相同。

    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。如果我能做到这一点,我会再次测试它们,看看 Windows 上的 nginx 是否能正常工作。

答案1

由于错误是由应用服务器报告的,这意味着 SSL 隧道已建立。您应该在其他地方搜索您的问题。

您可以使用 Fiddler 等 HTTP 调试代理来查看加密的 HTTPS 对话。比较两个 Nginx 服务器的 Fiddler 日志。

答案2

这是我的错。我发现之前我的本地计算机(Windows)上安装了一个应用程序,并作为 Windows 服务自动启动。此应用程序正在监听 443 端口号。当我的 Windows 上的 Nginx 启动时,它不会报告错误,因为 80 端口号未被其他进程使用。当使用 HTTPS 访问本地站点时,它只会与我本地计算机上的应用程序而不是我的 nginx 对话。我关闭了该应用程序并在 Windows 上重新测试 nginx,它运行正常。

相关内容