【问题标题】:How to convert Nginx.conf configuration to nginx-ingress-controller ingress.yml?如何将 Nginx.conf 配置转换为 nginx-ingress-controller ingress.yml?
【发布时间】:2022-01-15 17:25:27
【问题描述】:

我有以下配置的 nginx.conf。

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout   65;
proxy_send_timeout      65;
proxy_read_timeout      300;
proxy_buffers           4 256k;
proxy_buffer_size       128k;
proxy_busy_buffers_size 256k;
large_client_header_buffers  8 64k;
client_header_buffer_size    64k;
client_max_body_size    1024m;

server {
        listen          443 ssl;
        server_name server1.com;
        ssl_certificate /etc/nginx/ssl/server1.com.crt;
        ssl_certificate_key /etc/nginx/ssl/server1.com.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        proxy_ssl_session_reuse on;
        proxy_ssl_protocols TLSv1.2;

        rewrite_log on;

        proxy_cache_bypass $http_cache_control;
        proxy_ignore_headers "Set-Cookie";
        add_header X-Proxy-Cache $upstream_cache_status;

        location / {
                location = /robots.txt {
                    add_header  Content-Type  text/plain;
                    return 200 "User-agent: *\nDisallow: /\n";
                }

                location ~ ^/(files/app)  {
                    proxy_pass http://server1.com:31111;
                }

                proxy_pass https://server2.com;
        }
}

我想将我的 nginx 配置转移到 kubernetes ingress-nginx ingress.yml。有没有办法使用 kubernetes Ingress 资源来实现这个配置?

这是我的 ingress.yml,它当然不起作用,并且点击 url https://server1.com/files/app 会进入多个重定向并最终抛出 502 Bad Gateway。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    meta.helm.sh/release-name: my-service
    meta.helm.sh/release-namespace: default
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
  name: my-service
  namespace: default
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/my-service
spec:
  rules:
  - host: server1.com
    http:
      paths:
      - backend:
          serviceName: my-service
          servicePort: 31111
        path: /files/app
        pathType: ImplementationSpecific

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是使用裸机安装还是某些云提供商?
  • @kkopczak 这是 K8s 1.21 和 cloudprovider。另请注意,除此之外,所有其他入口规则都可以正常工作。我怀疑这与反向代理或 SSL 证书有关……但我不知道如何将此 nginx.conf 转换为 Kubernetes 的 ingress.yml。
  • 抱歉回复晚了。如果在 nginx.conf 中将端口从 listen 443 ssl; 更改为 listen 31111 ssl; 会发生什么?

标签: nginx kubernetes nginx-ingress


【解决方案1】:

解决方案是从 httpd.conf 中删除条目。我的服务直接绕过了请求,但我也在 httpd conf 中提供了这些条目,因为它在内部循环。就入口规则而言。在我从 httpd.conf 中删除相关规则后,上述配置运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 2019-12-03
    • 2022-08-10
    • 2021-05-13
    • 2019-02-24
    • 2019-04-30
    • 2020-01-03
    • 2021-12-28
    相关资源
    最近更新 更多