Перейти к содержимому

Внешний доступ к 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»

Открываем nginx.conf и ищем строку map $http_cookie $auth_cookie. Нам понадобиться значение после *, i.e. для

map $http_cookie $auth_cookie {
default 0;
"~*aEmFnBcC=WbYWpixX" 1;
}

нашими cookie будут aEmFnBcC=WbYWpixX.

На примере 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()