Я видел другие сообщения, в которых говорится, что причиной являются либо права доступа к файлам, либо отсутствие директивы индекса. Однако в моем приложении 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 и отображает домашнюю страницу.