Flask 앱의 루트 위치는 nginx 서버에서 403을 반환합니다


0

다른 게시물에 따르면 파일 권한이나 색인 지시문이 부족한 것이 원인입니다. 그러나 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)

그래서 기본적으로 단일 경로가있는 단일 views.py가 있습니다. / admin / 인 모든 것은 매력처럼 작동하지만 단지 / 인 것은 그렇지 않습니다.

내가 말했듯이, 나는 색인이 없다. nginx.conf의 index 지시어를 "app"로 설정하려고했지만 마법이 발생하지만 주사위는 없습니다.

내 파일 구조는 다음과 같습니다.

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

nginx 로그에서 :

"/ srv / www / cc / app /"의 디렉토리 인덱스는 금지되어 있습니다

나는 다른 사람들이 온라인에서 비슷한 문제를 발견했고 nginx가 사용자 www-data로 실행 되며이 사용이 디렉토리의 소유자임을 확인했습니다.


1
root서로 다른 디렉토리를 가리키는 세 개의 다른 지시문이 있습니까? 먼저 수정하면 문제가 해결 될 것으로 예상됩니다.
Michael Hampton

나는 그것이 nginx에게 정적 파일을 찾을 위치를 알려주기 위해 디렉토리를 변경해야한다고 생각했습니다. 웹 사이트에서 가져 왔습니다. nginx.org/ko/docs/beginners_guide.html#static
Chockomonkey

@MichaelHampton 나는 계속해서 당신의 제안을 시도했습니다. 서버 루트를 / srv / www / cc / app로 변경하고 다른 두 개를 제거했습니다. 작동하는 모든 것이 계속 작동하고 사이트의 루트 / 위치는 여전히 403을 반환합니다.
Chockomonkey

답변:


0

따라서 try_files의 작동 방식을 완전히 이해하지 못했습니다.

그것을 읽은 후 '/'가 아닌 요청에 대한 일치를 찾지 못했지만 '/'와 일치하고 디렉토리를 나열하려고했습니다. error_page 403 = @cc를 루트 위치 블록에 추가하면 내 cc 위치로 올바르게 리디렉션되고 홈페이지가 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.