Nginx: ошибка 404 Not Found в качестве обратного прокси

Я пытаюсь настроить Nginx в качестве обратного прокси-сервера, сохраняя за собой Uvicorn.

Когда я пытаюсь получить доступ к example.com, он возвращает домашнюю страницу, но дает 404 для всех статических файлов.

Когда я пытаюсь получить доступ к любой другой конечной точке, такой как example.com/blog, он возвращает 404 не найденную страницу.

Вот конфигурация Nginx:

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;
 }

Какие изменения я должен сделать, чтобы заставить его работать?


person AKA    schedule 29.03.2021    source источник
comment
Удалите оператор try_files.   -  person Richard Smith    schedule 29.03.2021


Ответы (1)


Согласно предложению @richard-smith в комментарии, я попытался прокомментировать эту строку.

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;
        }

и это работало нормально. Теперь он может обслуживать все конечные точки.

person AKA    schedule 29.03.2021