http -> https redirect in Google Kubernetes Engine

后端 未结 5 666
南方客
南方客 2021-02-07 23:09

I\'m looking to redirect all traffic from

http://example.com -> https://example.com like how nearly all websites do.

I\'ve looked at this link with no success:

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-07 23:54

    For what it's worth, I ended up using a reverse proxy in NGINX.

    1. You need to create secrets and sync them into your containers
    2. You need to create a configmap in nginx with your nginx config, as well as a default config that references this additional config file.

    Here is my configuration:

    worker_processes  1;
    
    events {
        worker_connections  1024;
    }
    
    
    http {
    
    default_type  application/octet-stream;
    
    # Logging Configs
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log  /var/log/nginx/access.log  main;
    
    sendfile        on;
    keepalive_timeout  65;
    
    # Puntdoctor Proxy Config
    include /path/to/config-file.conf;
    
    # PubSub allows 10MB Files. lets allow 11 to give some space
    client_max_body_size 11M;
    
    }
    

    Then, the config.conf

    server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
    }
    
    server {
    
    listen 443;
    server_name example.com;
    
    ssl_certificate           /certs/tls.crt;
    ssl_certificate_key       /certs/tls.key;
    
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-RC4-SHA:AES128-GCM-SHA256:HIGH:!RC4:!MD5:!aNULL:!EDH:!CAMELLIA;
    ssl_prefer_server_ciphers on;
    
    location / {
    
      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_set_header        X-Forwarded-Proto $scheme;
      proxy_set_header        X-Forwarded-Host $http_host;
    
      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://deployment-name:8080/;
      proxy_read_timeout  90;
    
      proxy_redirect      http://deployment-name:8080/ https://example.com/;
    }
    }
    
    1. Create a deployment:

    Here are the .yaml files

    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: puntdoctor-lb
    spec:
       ports:
        - name: https
          port: 443
          targetPort: 443
         - name: http
          port: 80
          targetPort: 80
      selector:
        app: puntdoctor-nginx-deployment
      type: LoadBalancer
      loadBalancerIP: 35.195.214.7
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: puntdoctor-nginx-deployment
    spec:
       replicas: 2
      template:
        metadata:
          labels:
            app: puntdoctor-nginx-deployment
        spec:
           containers:
           - name: adcelerate-nginx-proxy
            image: nginx:1.13
             volumeMounts:
            - name: certs
              mountPath: /certs/
            - name: site-config
              mountPath: /etc/site-config/
            - name: default-config
              mountPath: /etc/nginx/
            ports:
            - containerPort: 80
              name: http
            - containerPort: 443
              name: https
          volumes:
          - name: certs
            secret:
              secretName: nginxsecret
          - name: site-config
            configMap:
              name: nginx-config
           - name: default-config
            configMap:
             name: default
    

    Hope this helps someone solve this issue, thanks for the other 2 answers, they both gave me valuable insight.

提交回复
热议问题