Sceada
Sceada

Reputation: 533

NGINX unexpected behaviour with location directive and proxy_pass

I have a NGINX configuration file to serve a Website with static files and via a development Server.

static -> http://localhost:8080

dev webserver -> http://localhost:8080/dev

There are several other services which I bind to different location directives.

Here is a snipped of the configuration file.

...
upstream qgis {
   server qgis-spcluster_server:80;
}
...    
server {
    listen       8080;
    server_name  localhost;

location / {
    root   /usr/share/nginx/html/build;
    index  index.html index.htm;

    auth_basic "Zugangskontrolle";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

location /dev/ {
    proxy_pass http://web_app/;

    auth_basic "Zugangskontrolle";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

location /static/ {
    proxy_pass http://web_app/static/;
}

location /qgis/ {
    proxy_pass http://qgis/;
}

location /apex/ {
    proxy_pass http://apex/apex/;
    auth_basic "off";
}

...

Everything works as expected until i open the URL to get the static files. After that all other URLs leads to the static files.

For me everything looks ok, but indeed something is not ok.

The Basic_Auth produce another unexpected behaviour.

So in the moment I'm a little bit clueless how to solve this issue.

Upvotes: 0

Views: 581

Answers (2)

Sceada
Sceada

Reputation: 533

I tried now several things, but nothing really worked well. So I decided to create a second server block for all location directives which are problematic with my current setup.

Probably this is not the best solution, because I have still no idea why I get these problems. But it works now and that counts for me.

Upvotes: 0

mononoke
mononoke

Reputation: 609

Please remove the trailing / from your location directives or provide / when you access them.

Nginx looks for the longest prefix match location. When you access http://localhost:8080/apex, it's routed to / because /apex/ is not the prefix of /apex

Documentation of location is here

Upvotes: 1

Related Questions