我正在通过helm在minikube运行nginx ingress controller,通过查看nginx ingress controller pod的日志,我可以看到控制器中启用了SSL直通。
helm upgrade ingress stable/nginx-ingress --install --namespace kube-system --set "controller.extraArgs.annotations-prefix=nginx.ingress.kubernetes.io" --set "controller.extraArgs.enable-ssl-passthrough=" --set controller.hostNetwork=true
在内部,我在19000端口上暴露了一个HTTPS REST API服务。我希望客户端和k8s内运行的服务之间有相互的TLS,所以我试图在启用SSL直通的情况下配置我的入口,但是当我在入口上将nginx.ingress.kubernetes.io/ssl-passthrough注释设置为"true"时,后端仍然显示sslPassover设置为false当我向服务发送请求时,nginx正在从我的请求中剥离TLS证书。
我是否缺少一些配置来在后端启用SSL passthrough?
$ kubectl ingress-nginx --deployment ingress-nginx-ingress-controller -n kube-system backends
[
{
"name": "default-tlsapi-service-19000",
"service": {
"metadata": {
"creationTimestamp": null
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 19000,
"targetPort": 19000,
"nodePort": 30000
}
],
"selector": {
"app": "tlsapi"
},
"clusterIP": "10.96.218.188",
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"port": 19000,
"sslPassthrough": false,
"endpoints": [
{
"address": "172.17.0.7",
"port": "19000"
}
],
"sessionAffinityConfig": {
"name": "",
"mode": "",
"cookieSessionAffinity": {
"name": ""
}
},
"upstreamHashByConfig": {
"upstream-hash-by-subset-size": 3
},
"noServer": false,
"trafficShapingPolicy": {
"weight": 0,
"header": "",
"headerValue": "",
"cookie": ""
}
}
进入。亚马尔
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: tlsapi-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
rules:
- host: tlsapi.k8s
- http:
paths:
- path: /
backend:
serviceName: tlsapi-service
servicePort: 19000
服务亚马尔
apiVersion: v1
kind: Service
metadata:
name: tlsapi-service
spec:
type: NodePort
selector:
app: tlsapi
ports:
- port: 19000
targetPort: 19000
nodePort: 30000
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tlsapi-deployment
spec:
selector:
matchLabels:
app: tlsapi
replicas: 1
template:
metadata:
name: tlsapi-pod
labels:
app: tlsapi
spec:
containers:
- name: tlsapi-container
image: tlsapi:latest
imagePullPolicy: IfNotPresent
原来问题出在我的入口定义上。我需要删除http密钥前面的-from:
工作ingress.yaml片段
spec:
rules:
- host: tlsapi.k8s
http:
paths:
- path: /
backend:
serviceName: tlsapi-service
servicePort: 19000
不工作ingress.yaml片段
spec:
rules:
- host: tlsapi.k8s
- http:
paths:
- path: /
backend:
serviceName: tlsapi-service
servicePort: 19000
如果将yaml转换为json,则单个字符的差异会更加明显!
删除该字符后,SSL passthrough将按预期工作
您需要启动nginx入口控制器与标志--enable-ssl-Passover
您可以在nginx入口控制器部署yaml的args部分提供此标志
spec:
# wait up to five minutes for the drain of connections
terminationGracePeriodSeconds: 300
serviceAccountName: nginx-ingress-serviceaccount
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master
args:
- --enable-ssl-passthrough
您可以通过查看nginx入口控制器日志并搜索SSL直通的启动TLS代理来确认参数生效。
我有一个域名lxl.top,有两个通过docker部署在ngingx上的web前端项目log,admin, 能通过域名+端口号访问, 现在我想要通过log.lxl.top和admin.lxl.top分别访问这两个项目, 两个前缀已经在dns解析了, 在nginx配置文件中该怎么配置呢? 我的nginx配置文件如下
那么... 我在端口8080的服务器上运行了一个节点应用程序,我正在尝试使用NGINX和CloudFlare使其能够通过SSL工作。请注意以下几点。。。 我的主机正在运行Ubuntu 16.04 LTS ...我以前的NGINX配置看起来像。。。 ...现在看起来。。。 ...我遵循了这里的例子和它在这里提供的链接,我怀疑上面的一切都是必需的(我是一个极简主义者)。每当我运行时,我仍然会在未指定s
nginx error.log日志一直报 错误,我使用pc 浏览器访问一切正常,nginx上还挂着给app访问的api接口,在app上会出现有的用户可以访问有的出问题这种情况。搜索了百度和谷歌都没找到问题所在。 https 证书是阿里云买的证书。nginx配置如下 服务器系统版本:Rocky Linux release 9.1 (Blue Onyx) nginx版本:nginx version:
TL;DR:我想在nginx入口控制器上通过SSL passthrough在K8s中设置基于cookie的会话关联性——可以这样做吗? 嘿所有人, 我有一个正在运行的Azure Kubernetes服务(AKS)(1.11.3),并配置了NGINX入口控制器,将请求路由到我的应用程序的ClusterIP服务(该应用程序至少运行两个pod)。 我已经成功地在入口控制器上配置了SSL直通,以便TLS在
我希望以以下方式分割Kubernetes Nginx中的传入流量: 我为找到了指向example.com的路由。 此解决方案仅在service-b超过HTTPS的情况下工作,但在我的情况下,由于其他一些内部依赖关系,我无法将此服务更改为HTTPS。 我的问题是注释适用于整个类型,我不能按路径定义它。 附:我正在使用AWS提供程序
我已经在服务器上安装了Nginx、PHP-FPM、SSL证书(让我们加密)和WordPress 4.6.1,并且运行良好。但是,当我将permalink设置更改为默认值以外的任何设置时,我会在每个帖子、文章和页面上得到404个错误。在我的nginx配置文件中,我的位置/块下面有以下代码: try_files$uri$uri//index.php?$args; 以下是我的nginx.conf: