我正在用艾奥赫特开发一个web应用程序,其中用户身份验证是用aiohttp-安全实现的。我使用nginx进行服务器部署。这种配置是受艾奥赫德博士启发的,如下所示:
location /api {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://127.0.0.1:8080/api;
}
web应用程序的一部分类似于相册。我希望这些照片由ngninx公司提供,以保证性能。我的配置现在看起来是这样的,但它可以绕过身份验证:
location /photos {
root /srv/web/photos/;
try_files $uri =404;
}
如何使nginx
只向经过身份验证的用户提供照片?( python应用程序正在实现的身份验证机制,如上面所述)
发布于 2021-12-04 17:22:37
这可以通过使用基于子请求结果的身份验证来实现。
可以借助子请求认证保护静态/媒体位置。
考虑静态/媒体位置:/media/
nginx.conf
....
location /media {
auth_request /auth;
#...
}
location = /auth {
internal;
proxy_pass https://yourauthserver/is_authenticated;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
#...
}
...
/is_authenticated
--这是您的web应用程序检查用户是否经过身份验证的位置。
只有当is_authenticated
返回状态代码200
时,才能提供静态/媒体服务。
https://stackoverflow.com/questions/54052932
复制相似问题