小编Adr*_*ith的帖子

Google Container Engine 上带有“kubectl Exposure”的静态 IP 永远处于 <pending> 状态

我正在尝试kubectl expose在 Google Container Engine 上通过带有静态 IP 地址的命令公开 kubernetes“部署” 。

使用临时 IP,一切正常:

kubectl expose deployment my-application \
    --type="LoadBalancer" --port=80 --target-port=8080
Run Code Online (Sandbox Code Playgroud)

我使用kubectl get services并等待几分钟以查看已分配的临时 IP。我在浏览器中输入 IP 并看到应用程序,即一切正常。

但是,当我执行以下操作时:

  1. 使用 gcloud 网络界面创建静态 IP 地址(网络 -> 外部 IP 地址 -> 保留静态 IP 地址)

  2. 使用与上述相同的命令重新创建服务,但使用额外的--load-balancer-ip选项

    kubectl expose deployment my-application \
        --type="LoadBalancer" --port=80 --target-port=8080 \
        --load-balancer-ip='1.2.3.4'   # IP as assigned by web interface above
    
    Run Code Online (Sandbox Code Playgroud)

命令成功,但在该 IP 地址下无法访问应用程序,当我使用以下命令时:

$ kubectl get services
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
endpoints    10.119.247.39   <pending> …
Run Code Online (Sandbox Code Playgroud)

kubernetes gcloud

8
推荐指数
1
解决办法
4445
查看次数

向目录添加尾部斜杠时,Apache 从 HTTPS 重定向到 HTTP

我在 AWS 上使用 Docker 使用 Apache。Apache 侦听端口 80 并提供 HTTP 服务。

Apache 位于 AWS ELB 负载均衡器之后,该负载均衡器仅侦听为 HTTPS 提供服务的端口 443。

当我请求https://example.com/foo/(带有斜杠)时它工作正常,我的内容被提供。

当我请求https://example.com/foo(没有尾部斜杠)时,它会重定向到http://example.com/foo/ - 也就是说它添加了尾部斜杠(正确)但从 HTTPS 重定向到 HTTP(不正确)。

我该怎么办?

我的 Dockerfile 是

FROM httpd:2.4
COPY . /usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)

当我通过 curl 执行请求时:

$ curl -v https://example.com/foo
*   Trying 1.2.3.4...
* TCP_NODELAY set
* Connected to example.com (1.2.3.4) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: example.com
* Server certificate: Amazon
* Server certificate: Amazon Root …
Run Code Online (Sandbox Code Playgroud)

amazon-elb apache-2.4

5
推荐指数
2
解决办法
2683
查看次数

如何防止 nginx 在 AWS 上从 HTTPS 重定向到 HTTP?

我在 AWS ELB 负载均衡器后面有一个由 nginx 服务的网站。负载均衡器上仅启用了 HTTPS。

请求单个文件或带有斜杠的目录可以正常工作。但是,请求没有尾部斜杠的目录不起作用。

原因是,当我请求没有尾部斜杠的目录时,nginx 会重定向到带有尾部斜杠的路径(没关系),但它也会从 HTTPS 更改为 HTTP。负载平衡器配置为仅允许 HTTPS,因此不起作用(超时)。

在 nginx 日志文件上,我可以看到请求到达了 nginx,并且是 nginx 响应 301 永久重定向(因此它不是例如负载平衡器设置的问题)。

10.100.10.15 - - [24/Nov/2017:15:41:08 +0000] "GET /admin HTTP/1.1" 301 178 "-" "Wget/1.18 (darwin16.0.0)"
Run Code Online (Sandbox Code Playgroud)

当我通过curl我看到重定向请求 URL 时:

$ curl -v https://example.com/admin
*   Trying 1.2.3.4...
* TCP_NODELAY set
* Connected to example.com (1.2.3.4) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: example.com
* Server certificate: Amazon
* Server certificate: Amazon …
Run Code Online (Sandbox Code Playgroud)

nginx https amazon-elb

3
推荐指数
1
解决办法
3882
查看次数

标签 统计

amazon-elb ×2

apache-2.4 ×1

gcloud ×1

https ×1

kubernetes ×1

nginx ×1