I need help with my nginx-apache configuration in k8s
I'm getting troubles with communications between nginx-pod and apache-pod
I have these configs:
server {
listen 8080;
listen [::]:8080;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /redblue/ {
rewrite ^/redblue/(.*)$ /$1 break;
proxy_pass http://redblue;
}
location /apache/ {
rewrite ^/apache/(.*)$ /$1 break;
proxy_pass http://apache:8080;
}
if ($host = ${DOMAIN}) {
return 301 https://$host$request_uri;
}
}
server {
listen 8003;
server_name red-virtual-server-redblue;
location / {
root /usr/share/nginx/html/redblue/red;
index index.html index.htm;
}
}
server {
listen 8004;
server_name blue-virtual-server-redblue;
location / {
root /usr/share/nginx/html/redblue/blue;
index index.html index.htm;
}
}
upstream redblue {
server 127.0.0.1:8003;
server 127.0.0.1:8004;
}
nginx's static folder structure
nginx/html/
├── index.html
├── music
│ └── sunflower.mp3
├── redblue
│ ├── blue
│ │ └── index.html
│ └── red
│ └── index.html
└── sunflower.html
apache-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: apache-pod
labels:
app: apache
spec:
containers:
- name: apache
image: my-registry:apache
ports:
- containerPort: 8080
name: apache-port
nginx-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: my-registry:apache
ports:
- containerPort: 8080
name: nginx-port
apache-service.yml
apiVersion: v1
kind: Service
metadata:
name: apache
spec:
selector:
app: apache
ports:
- protocol: TCP
port: 8080
targetPort: apache-port
nginx-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
selector:
app: apache
ports:
- protocol: TCP
port: 80
targetPort: nginx-port
nodePort: 30081
So my nginx is available at ip:30081
I have index page with links to my static content sunflower.html and /music/sunflower.mp3 are getting normally but
I cant get proxied to my redblue servers and apache server
Locally I'm using docker compose and with it everything is working fine. All proxy_pass works as needed
But when I'm using k8s i have access to only my static content (nginx is running inside of container by nginx
user and access rights to static folder are set to nginx:nginx)
Also I have no redirect 301 moved permanently logs to my redblue
and apache
servers in kubectl logs
Only static content entries
Inside nginx-pod I can ping/curl to http://apache:8080 and can obtain apache's index.html
But request to nginx doesn't even log when reaching ip:30081/apache or ip:30081/redblue :(
What am I doing wrong? Should I have to use ingress class?