У меня есть сервер, защищенный паролем, на котором я храню файлы, к которым мои пользователи должны иметь доступ, только если у них есть права.
В конфигурациях NGiNX я хочу сделать что-то вроде этого:
proxy_pass http://username:password@domain:80/
Чтобы пользователь мог перейти по этому адресу:
http://img.website.com/bob.jpg
И тогда на сервере конфиги будут указывать на этот адрес:
http://username:password@domain:80/bob.jpg
Также есть способ вызвать сценарий (лучше всего это PHP), чтобы узнать, вошел ли в систему человек, обращающийся к файлу.
Мои сеансы сохраняются на другом сервере (в БД Redis), поэтому, если это невозможно сделать с помощью PHP, есть ли другой способ?
Итак, как мне это настроить?
Пожалуйста, ознакомьтесь со следующими двумя ссылками, чтобы ответить на ваш первый вопрос о HTTP-аутентификации с nginx в контексте прокси:
А вот простой пример:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://domain:80;
proxy_set_header Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ=";
}
куда dXNlcm5hbWU6cGFzc3dvcmQ=
является username:password
закодировано в Base64.
По поводу вашего второго вопроса. Да, с помощью PHP легко проверить наличие существующего сеанса HTTP-аутентификации. Пожалуйста, перейдите к официальной документации PHP для этой функции. Там вы найдете много полезных примеров, которые помогут вам начать работу: