Nginx,GET 和 POST 解决“普通 HTTP 请求已发送到 HTTPS 端口”

Nginx,GET 和 POST 解决“普通 HTTP 请求已发送到 HTTPS 端口”

我正在尝试为在本地主机上运行且没有 SSL 支持的 Web 管理控制台创建 SSL 代理。

这是我的配置:

server {
  listen                  111.222.1.1:8443 ssl;
  server_name             admin.company.com;

  ssl_certificate         tls/ssl.crt;
  ssl_certificate_key     tls/ssl.key;

  proxy_set_header        Host $http_host;
  proxy_set_header        X-Real-IP $remote_addr;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_hide_header       X-Powered-By;

  #error_page 497         https://admin.company.com:8443$request_uri;

  location / {
    proxy_pass            http://127.0.0.1:8080/;
  }
}

代理服务非常复杂,使用了大量 Post/Redirect/Get 操作,网络监视器显示它们都涉及“http://admin.company.com:8443” 从而引起了主题。

添加error_page 497(注释掉)可以解决 GET 和重定向问题,但无法进行 POST。有没有办法解决这个问题,一个 IP 和一个端口配置,可以代理 GET 和 POST 请求?

更新: 代理后面的应用程序是一个在不安全模式下运行的 Java servlet,所以我相信这就是“http”的来源,它只是采用代理主机名并建立明确设置“http”的 URL。

答案1

我没有足够的声誉来发表评论。但我建议您检查上游,并检查其他 nginx conf 文件,并确保它们针对的是特定 ip,而不是通配符,例如 listen *:8443 ssl; 或类似的东西。这样它就不会回退。

相关内容