Reputation: 533
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
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
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