【发布时间】:2021-11-28 12:51:01
【问题描述】:
我正在使用堆栈 Nginx + Kubernetes 和 Ingress Nginx 来安装 Ghost 博客。我的 K8s 部署和 Nginx 配置如下。
问题是在访问已部署的博客时,我从浏览器收到了太多重定向错误。我猜根本原因是在 Nginx 入口中没有正确配置 HTTPS URL,但我没有正确的方法来解决它。有人可以指出我这里出了什么问题?
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-blog
spec:
rules:
- host: my-blog.com
http:
paths:
- backend:
service:
name: my-blog
port:
number: 2368
path: /
pathType: Prefix
---
apiVersion: v1
kind: Service
metadata:
labels:
app: my-blog
name: my-blog
spec:
ports:
- port: 2368
protocol: TCP
selector:
app: my-blog
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-blog
name: my-blog
spec:
replicas: 1
selector:
matchLabels:
app: my-blog
template:
metadata:
labels:
app: my-blog
spec:
containers:
- env:
- name: url
value: https://my-blog.com
image: ghost:latest
name: my-blog
ports:
- containerPort: 2368
terminationGracePeriodSeconds: 30
server {
server_name my-blog.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_intercept_errors on;
proxy_pass http://k8s_cluster;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/my-blog.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-blog.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = my-blog.com) {
return 301 https://$host$request_uri;
}
server_name my-blog.com;
listen 80;
return 404;
}
【问题讨论】:
-
你在哪里设置了你的 nginx 文件?您的流量如何移动? ngin pod 的入口或有多少个 pod 正在运行?
-
@HarshManvar Nginx 配置文件是为负载均衡器设置的,在该负载均衡器中获取来自用户的所有流量,然后再将它们转发到 K8S 的内部节点。流程是 users -> Internet -> Load Balancer (Nginx) -> Ingress Nginx -> Service 现在只运行一个 pod 进行测试
-
理想情况下,您不应该使用它,只需创建 Nginx 的负载均衡器类型服务并将该 IP 用于 DN 即可。你必须安装 Nginx 控制器,它不需要文件配置
标签: nginx kubernetes nginx-ingress ghost-blog