--- title: Troubleshooting nginx-proxy --- :::caution The `nginx-proxy` container is an RKE1-specific component. If you are using RKE2 or K3s, this container is not deployed, as load balancing to the API servers is handled internally by a client-side load balancer within the agent process itself. Additionally, please note that RKE1 has reached its [End of Life (EOL)](https://support.scc.suse.com/s/kb/RKE-EOL-what-when-why?language=en_US). Therefore, the information on this page is considered deprecated. ::: The `nginx-proxy` container is deployed on every node that does not have the `controlplane` role. It provides access to all the nodes with the `controlplane` role by dynamically generating the NGINX configuration based on available nodes with the `controlplane` role. ## Check if the Container is Running The container is called `nginx-proxy` and should have status `Up`. The duration shown after `Up` is the time the container has been running. ``` docker ps -a -f=name=nginx-proxy ``` Example output: ``` docker ps -a -f=name=nginx-proxy CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3e933687c0e rancher/rke-tools:v0.1.15 "nginx-proxy CP_HO..." 3 hours ago Up 3 hours nginx-proxy ``` ## Check Generated NGINX Configuration The generated configuration should include the IP addresses of the nodes with the `controlplane` role. The configuration can be checked using the following command: ``` docker exec nginx-proxy cat /etc/nginx/nginx.conf ``` Example output: ``` error_log stderr notice; worker_processes auto; events { multi_accept on; use epoll; worker_connections 1024; } stream { upstream kube_apiserver { server ip_of_controlplane_node1:6443; server ip_of_controlplane_node2:6443; } server { listen 6443; proxy_pass kube_apiserver; proxy_timeout 30; proxy_connect_timeout 2s; } } ``` ## nginx-proxy Container Logging The logging of the containers can contain information on what the problem could be. ``` docker logs nginx-proxy ```