【发布时间】:2021-07-06 20:40:34
【问题描述】:
我有以下任务:
我需要使用 Google Chrome 浏览器导航到:
https://mytestserver.com/users/list
这应该被重定向到我的本地 Java 服务器,该服务器在端口 8080 上侦听 Http 请求。
我在 Mac OSX 上运行,为此我做了以下操作:
- 在 /etc/host 文件中添加了
127.0.0.1 mytestserver.com。 - 在 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 容器中而不是在您的主机上,那么您可以只使用容器的名称。