【问题标题】:Redirect Https request to local Http application server将 Https 请求重定向到本地 Http 应用服务器
【发布时间】:2021-07-06 20:40:34
【问题描述】:

我有以下任务: 我需要使用 Google Chrome 浏览器导航到: https://mytestserver.com/users/list

这应该被重定向到我的本地 Java 服务器,该服务器在端口 8080 上侦听 Http 请求。

我在 Mac OSX 上运行,为此我做了以下操作:

  1. 在 /etc/host 文件中添加了127.0.0.1 mytestserver.com
  2. 在 Docker 容器上安装了 Nginx 服务器,配置如下:
events {
        worker_connections      1024;
}

http {
    server {
      listen                        443 ssl;
      server_name                   mytestserver.com;
      ssl_certificate               /etc/nginx/certs/star_com.crt;
      ssl_certificate_key           /etc/nginx/certs/star_com.key;
      ssl_protocols                 TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers                   HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;

        proxy_set_header            X-Forwarded-Proto $scheme;

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

然后我运行我的本地应用程序服务器并在 8080 上监听传入的 Http 请求, 最后我尝试运行https://mytestserver.com/users/list,但出现 502 错误。 在 Nginx 日志中我可以看到这个错误:

2021/07/06 20:37:47 [error] 23#23: *3 connect() failed (111: Connection refused) 
while connecting to upstream, client: 172.17.0.1, server: mytestserver.com, request: 
"GET /users/list HTTP/1.1", upstream: "http://127.0.0.1:8080/users/list", host: "mytestserver.com"

我在这里错过了什么?

【问题讨论】:

  • 从 Docker 容器内部,127.0.0.1 是同一个 Docker 容器,而不是您的主机,它可能是您的应用服务器运行的地方?
  • 好点!那么如何配置它重定向到容器外的本地主机呢?
  • 我从未尝试过,但这里有很多关于它的问题,例如stackoverflow.com/questions/31324981/…。不确定是否更容易,但是如果您可以将应用服务器放在另一个 Docker 容器中而不是在您的主机上,那么您可以只使用容器的名称。

标签: nginx nginx-reverse-proxy


【解决方案1】:

对我有用的是将host.docker.internal 设置为主机容器的地址。

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多