AKA
AKA

Reputation: 594

Nginx: 404 Not Found error as reverse proxy

I am trying to configure Nginx as reverse proxy keeping Uvicorn behind it.

When I try to access "example.com", it returns the home page but gives 404 for all static files.

When I try to access any other endpoint like "example.com/blog", it returns "404 not found" page.

Here is the Nginx config:

server {

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;

                #custom config
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_redirect off;
                proxy_buffering off;
                proxy_pass http://uvicorn;
        }


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;

        server_name example.com www.example.com;

    return 404; # managed by Certbot


}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream uvicorn {
    server unix:/tmp/uvicorn.sock;
 }

What changes should I do to make it work?

Upvotes: 2

Views: 4223

Answers (1)

AKA
AKA

Reputation: 594

As per the suggestion given by @richard-smith in the comment, I tried commenting out this line

location / {
                #try_files $uri $uri/ =404;  <-- here

                #custom config
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_redirect off;
                proxy_buffering off;
                proxy_pass http://uvicorn;
        }

and it worked fine. It is now able to serve all the endpoints.

Upvotes: 1

Related Questions