Внешний доступ к API
Модификация конфигурации Nginx для внешнего доступа к API
Заголовок раздела «Модификация конфигурации Nginx для внешнего доступа к API»Добавляем в nginx.conf
в блок сервера с доменом панели server_name panel.domen.com;
location ^~ /api/ { proxy_http_version 1.1; proxy_pass http://remnawave; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_send_timeout 60s; proxy_read_timeout 60s;}
Это открывает доступ к API из-вне, при этом API будут по прежнему защищены токеном авторизации.
Получение доступа к API с использованием cookie
Заголовок раздела «Получение доступа к API с использованием cookie»Получение cookie
Заголовок раздела «Получение cookie»Открываем nginx.conf и ищем строку map $http_cookie $auth_cookie
. Нам понадобиться значение после *
, i.e. для
map $http_cookie $auth_cookie {default 0;"~*aEmFnBcC=WbYWpixX" 1;}
нашими cookie будут aEmFnBcC=WbYWpixX
.
Отправка cookies в header’е
Заголовок раздела «Отправка cookies в header’е»На примере HTTP клиента httpx
и записи COOKIES
в .env
файле вашего проекта рассмотрим отправку cookies в заголовке:
COOKIES={"aEmFnBcC":"WbYWpixX"}
token = os.getenv("API_TOKEN", "")base_url = os.getenv("REMNAWAVE_BASE_URL", "")cookies = json.loads(os.getenv("COOKIES", "{}"))
async def get_all_nodes(): headers = { "Content-Type": "application/json", "Authorization": "Bearer " + token }
async with httpx.AsyncClient(cookies=cookies) as async_client: response = await async_client.get(f"{base_url}/api/nodes", headers=headers)
return response.json()