nginx аутентифицирует TCP-сокет, а не http-запрос?

#http #authentication #nginx #tcp #request

Вопрос:

С помощью nginx можно выполнить аутентификацию запроса через серверную службу, такую как

 location /somewhere_restricted {
    auth_request /isallowed;
}
location = /isallowed {
    proxy_pass backend_auth
}
 

Однако backend_auth проверяется при каждом http — запросе. Можно ли авторизовать TCP-сокет? Сокет будет авторизован один раз, а затем будут выполняться все http-запросы, выполненные через него. Отмечая, что я использую http2

Это то, что происходит, например, с websocket, но мне понадобилась бы та же функциональность для обычных http-запросов, и я пока не смог найти ничего, связанного с этим

Ответ №1:

Не существует такого понятия, как авторизованный TCP-сокет. Авторизация является частью прикладного протокола, а универсальный TCP-сокет не имеет конкретного прикладного протокола. Также location он специфичен для протокола HTTP, т. е. универсальный TCP не имеет местоположения.

Комментарии:

1. Хорошо, спасибо, я надеялся найти способ пометить TCP-соединение, как это делается, например, с iptables, чтобы, как только соединение будет помечено, его можно было пропустить. Я использую websocket и nodejs, которые позволяют легко авторизовать (веб -) сокет, а затем отправлять файлы через него, но надеялся, что смогу сделать то же самое напрямую с nginx и не придется использовать пользовательские протоколы затем на websocket