Назад | Перейти на главную страницу

корневое расположение приложения Flask возвращает 403 на сервере nginx

Я видел другие сообщения, в которых говорится, что причиной являются либо права доступа к файлам, либо отсутствие директивы индекса. Однако в моем приложении Flask вообще нет индексного файла, и большая часть сайта работает как шарм.

nginx.conf

server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 5M;
    root /srv/www/cc/app;

    location / { 
        try_files $uri $uri/ @cc; 
    }
    location /uploads/ {
#       root /srv/www/cc/app;
        expires max;
    }
    location /static/ {
#       root /srv/www/cc/app;
        expires max;
    }
    location @cc {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
    }
}

фрагмент из views.py

@app.route('/', methods = ['GET'])
def client():

    return render_template("/client/index.html")


#-----------------CLIENT ABOVE, ADMIN BELOW------------------#


@app.route('/admin/', methods = ['GET'])
@login_required
def admin():

    submissions = Campaign.query.all()

    return render_template("admin.html",
        title = 'Admin',
        submissions = submissions)

Итак, у меня в основном есть один view.py с множеством маршрутов. Все, что есть / admin /, работают как шарм, но тот, который просто /, нет.

Как я уже сказал, у меня нет индекса. Я попытался установить для директивы index в nginx.conf значение «app», поскольку именно здесь происходит волшебство ... но без кубиков.

Вот моя файловая структура:

/cc/
    app/
        __init__.py
        views.py
        etc
        uploads/
        static/
    config.py

Из логов nginx:

индекс каталога "/ srv / www / cc / app /" запрещен

Я обнаружил похожие проблемы у других людей в Интернете, и я подтвердил, что nginx работает с пользовательскими www-данными и что это использование является владельцем каталога.

Очевидно, я не совсем понимал, как работает try_files.

Прочитав его, он не нашел соответствия ни одному запросу, который не был бы '/', но он БЫЛ соответствовал '/' и пытался вывести каталог. Как только я добавил error_page 403 = @cc в блок корневого местоположения, он правильно перенаправляется в мое местоположение cc и отображает домашнюю страницу.