интерфейсный веб-разработчик здесь. Извините заранее.
Моя компания хочет хранить новые сборки нашего программного обеспечения на нашем веб-сервере под управлением Nginx, предоставляемого Двигатель WP.
Путь к файлу для этих сборок будет company.com/downloads/file.zip
. Мы хотим ограничить доступ к файлам в этой папке, если они не поступают с определенного URL-адреса, который находится за воротами входа для наших клиентов.
/downloads/
от разрешенного реферера пользователь получает файлЯ нашел ресурс по предотвращению хотлинкинга изображений (мы будем иметь дело с файлами .zip), который может сработать для меня, но мне нужна помощь с синтаксисом этого языка. Вероятно, с этим все не так.
location ~ /downloads/$ {
valid_referers none blocked ~.allowed_domain.com;
if ($invalid_referer) {
return 404;
}
}
WP Engine не позволяет мне самому добавлять код Nginx, поэтому мне придется отправить им код, который я хочу, чтобы они реализовали. Если кто-нибудь знает, как это сделать, и может мне помочь, я буду очень признателен!
Другая возможность - использовать X-Accel заголовок. Я не знаю вашего варианта использования, поэтому он может не подойти.
X-Accel - это специфический заголовок nginx. Вы можете использовать этот заголовок в своем PHP-скрипте - например, header("X-Accel-Redirect: /private-downloads/magic.iso")
Когда nginx распознает этот заголовок, он будет серверным содержимым файла magic.iso
находится в /data/private-downloads
.
Итак, ваша задача подготовить download.php
которые проверяют авторизацию и отвечают либо X-Accel заголовок или перенаправление на экран входа в систему.
Значение /private-downloads/
в nginx.conf
location /private-downloads/ {
internal; # this
alias /data/private-downloads;
# this should be located outside of HTTP server root
}
Для получения дополнительной информации, пожалуйста, проверьте вопросы x-Accel на serverfault. 1
Ты можешь использовать valid_referers
Директива nginx. ( документ nginx )
location /downloads/ {
alias /var/www/downloads;
valid_referers www.example.me ;
if ($invalid_referer) {
return 404;
}
}
Я лично никогда не пробовал это в продакшене, потому что предпочитаю использовать Заголовок X-Accel . Вы можете подтвердить своего пользователя в сценарии PHP, а затем отправить заголовок nginx X-Accel. Заголовок попросит nginx передать статические файлы на сервер nginx.