Skip to content

Mixed content with Nginx Proxy Manager and Kubernetes #1075

@ebiscaia

Description

@ebiscaia

Describe the bug
I installed speedtest-tracker in a k0s cluster with metallb to be the load balancer and ingress-nginx (https://kubernetes.github.io/ingress-nginx). All of this is behind a nginx reverse-proxy (it redirects requests also to other services such as proxmox).

To Reproduce
Later on because it is rather long.

Expected behavior
Open the webpage and see all the css applied. I am getting a white page with some elements (#889 shows the same page I am getting).

Environment (please complete the following information):

  • OS: Ubuntu (latest early 2024)
  • Architecture: amd64
  • Browser: Brave
  • Version: the one provided by the image 'ghcr.io/alexjustesen/speedtest-tracker:latest'

Additional context
Config files
Reverse Proxy

upstream stest{
   server <ip-ingress>;
}

server {
   listen 80;
   server_name speedtest.eddienetworks.ddnsfree.com *.speedtest.eddienetworks.ddnsfree.com;
   return 301 https://$host$request_uri;
}

server {
   server_name speedtest.eddienetworks.ddnsfree.com *.speedtest.eddienetworks.ddnsfree.com;

   location / {
      proxy_pass http://stest/;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
   }
    
   listen [::]:443 ssl; # managed by Certbot
   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/eddienetworks.ddnsfree.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/eddienetworks.ddnsfree.com/privkey.pem; # managed by Certbot
   include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
   ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Config Map (env. variables)

apiVersion: v1
kind: ConfigMap
metadata:
  name: speedtest-cmap
  namespace: speedtest
data:
  uid: '1000'
  gid: '1000'
  tz: Australia/Melbourne
  db_conn: mysql
  db_host: mariadb-svc
  db_port: '3300'
  app_url: https://speedtest.eddienetworks.ddnsfree.com

Deployment File

apiVersion: apps/v1
kind: Deployment
metadata:
  name: speedtest
  namespace: speedtest
  labels:
    app: speedtest
spec:
  selector:
    matchLabels:
      app: speedtest
  replicas: 1
  template:
    metadata:
      labels:
        app: speedtest
    spec:
      containers:
        - name: speedtest
          image: ghcr.io/alexjustesen/speedtest-tracker:v0.13.3
          imagePullPolicy: IfNotPresent
          env:
            - name: PUID
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: uid
            - name: PGID
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: gid
            - name: TZ
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: tz
            - name: APP_URL
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: app_url
            - name: DB_CONNECTION
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: db_conn
            - name: DB_HOST
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: db_host
            - name: DB_PORT
              valueFrom:
                configMapKeyRef:
                  name: speedtest-cmap
                  key: db_port
            - name: DB_DATABASE
              valueFrom:
                secretKeyRef:
                  name: mariadb-scr
                  key: database
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mariadb-scr
                  key: pass
            - name: DB_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mariadb-scr
                  key: user
          ports:
            - containerPort: 80
              name: speedtest
          volumeMounts:
            - name: config
              mountPath: /config
            - name: web
              mountPath: /etc/ssl/web
            - name: localtime
              mountPath: /etc/localtime
              readOnly: yes
      volumes:
        - name: config
          persistentVolumeClaim:
            claimName: speedtest-cfg
        - name: web
          persistentVolumeClaim:
            claimName: speedtest-web
        - name: localtime
          hostPath:
            path: /etc/localtime
      restartPolicy: Always
---
# https://kubernetes.io/docs/concepts/services-networking/service/
apiVersion: v1
kind: Service
metadata:
  name: speedtest-svc
  namespace: speedtest
spec:
  selector:
    app: speedtest
  type: LoadBalancer
  loadBalancerIP: <load-balancer ip>
  ports:
    - name: speedtest
      protocol: TCP
      port: 3344
      targetPort: 80
---
# https://kubernetes.io/docs/concepts/services-networking/ingress/
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: speedtest-ing
  namespace: speedtest
spec:
  rules:
    - host: speedtest.eddienetworks.ddnsfree.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: speedtest-svc
                port:
                  number: 3344

For now, I am keeping the service as load balancer and using the its ip and port to have a fully functional version of the speedtest-tracker but it is the only service I need to use this approach.
If anyone wants to check, visit both speedtest.eddienetworks.ddnsfree.com and speedtest_lb.eddienetworks.ddnsfree.com

Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions