Please look at below nginx.conf content which is present in my azure aks:
server {
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate /etc/nginx/secrets/default;
ssl_certificate_key /etc/nginx/secrets/default;
server_name _;
server_tokens "on";
access_log off;
location / {
return 404;
}
}
include /etc/nginx/conf.d/*.conf;
looking at the above content i figured out that my ingress contents are present in conf.d folder.
If we see, location / is present before my other configurations. does that mean it is always returning 404 because of this reason?
The location setting lets you configure how nginx will respond to requests for resources within the server.
You can have more than one location directive.
Request: http://example.com/
Returns: Assuming that there is a server_name entry for example.com, the location / directive will determine what happens with this request. In your case, it will return 404. And since every request can map to location /, nginx will always respond with 404.
Refer https://linode.com/docs/web-servers/nginx/how-to-configure-nginx/#location-file-and-folder-configuration for more info.
What you have here is the conf for default backend. The default backend is a service which handles all url paths. It returns a 404 when the Ingress Controller cannot successfully route a request according to the mapping rules.
location / being present before (as in the order of occurrences) other configurations is not the problem here.
The default-http-backend is not designed to be outside facing -- it is merely designed to 404 so the Ingress controller can universally /dev/null traffic for Pod-less Services.
Please refer: https://docs.microsoft.com/fi-fi/azure/aks/kubernetes-walkthrough