Проблема с nginx proxy_pass для Flask

Мне необходимо сделать сервис, который будет через python requests авторизироваться в личном кабинете стороннего ресурса, а потом делать переадресацию на этот личный кабинет из браузера.

Решил использовать связку Flask + Nginx.

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

Фласк такой:

@app.route("/protected_area")
def protected_area():

    session = requests.Session()

    user = fake_useragent.UserAgent().random

    header = CaseInsensitiveDict()
    header['user-agent'] = user
    header['X-UA-Compatible'] = 'IE=Edge,chrome=1'
    header['Cache-Control'] = 'public, max-age=0'

    payload = {
        'mode': MODE,
        'username': LOGIN,
        'password': PASS
    }

    url_main = BASIC_SITE_URL + 'login'
    url_login = BASIC_SITE_URL + 'login/form'
    url_cabinet = BASIC_SITE_URL + '?personal_cabinet'

    response = session.get(url_main, headers=header, allow_redirects=False)

    cookies = get_cookies(response.cookies, URL)

    cookies = cookies.split(';')

    cookies = [(c.split('=', 1)) for c in cookies]

    session.cookies.update(dict(cookies))

    response = session.post(url_login, data=payload, cookies=response.cookies, headers=header, allow_redirects=False)


    cookies = get_cookies(response.cookies, URL)

    cookies = cookies.split(';')

    cookies = [(c.split('=', 1)) for c in cookies]

    session.cookies.update(dict(cookies))

    response = session.get(url_cabinet, headers=header, cookies=dict(cookies), allow_redirects=False)

    if response.status_code == 200:
        print('Sucessful!')

        expire_date = datetime.datetime.now()
        expire_date = expire_date + datetime.timedelta(days=1)

        response = make_response()

        response.set_cookie('ba-sso-csrf', dict(cookies).get('ba-sso-csrf'), expires=expire_date)
        response.set_cookie('paSession', dict(cookies).get('paSession'), expires=expire_date)

        response.header = CaseInsensitiveDict()
        response.header['user-agent'] = user
        response.header['X-UA-Compatible'] = 'IE=Edge,chrome=1'
        response.header['Cache-Control'] = f'public, max-age={expire_date}'

        return redirect("/redirect")

    elif response.status_code == 404:
        print('Unsuccessful!')
        return redirect("/redirect")

И конфиг в Нжинкс такой:

server {

    listen 80;
    server_name flask;

    location / {
        proxy_pass http://flask/;
    }

    location /redirect {
        proxy_pass http://VNESHNIY_URL/?personal_cabinet;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_ssl_session_reuse off;
        proxy_set_header Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
    }

}

Но когда я захожу в браузере на 127.0.0.1/protected_area, то ничего не происходит. Он пробует сделать 127.0.0.1/redirect, то нжинкс его оставляет на protected_area.

Подскажите, пожалуйста, какой правильный конфиг Нжинкса для моей задачи будет и правильно ли я передаю кукисы и хедерсы по Фласк, чтобы по ним войти на закрытую страницу внешнего ресурса.

Спасибо.


Ответы (0 шт):