I am trying to setup an nginx server to redirect to differents ports in my docker app depending on the endpoint in the URL.
I have tried changing the myapp.conf file to redirect as explained in some other questions of stackoverflow but I am not managing.
This is myapp.conf file:
server {
listen 80;
server_name automl.ddns.net;
# This just redirects if you go through http
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name automl.ddns.net;
resolver 127.0.0.11 valid=10s;
resolver_timeout 5s;
ssl_certificate /etc/letsencrypt/live/automl.ddns.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/automl.ddns.net/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Redirect any HTTP requests to HTTPS
if ($scheme != "https") {
return 301 https://$server_name$request_uri;
}
# Proxy requests to the Flask app running on port 5000
location /docs {
proxy_pass http://python-fastapi:8000/docs;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
break;
}
location ~ ^/(.*)$ {
client_max_body_size 20M; # Set maximum request size to 20MB
proxy_pass http://python-flask:5000/$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Debuggin I notice that when trying to access /docs I am going directly through the flask block and as it has no endpoint for docs it returns nothing.
I may guess that as my last block just expects any location it may be passing through both and causing issues, however, break should avoid that.