使用 NGiNX,如何让用户无需重定向即可访问另一台服务器上的文件?

使用 NGiNX,如何让用户无需重定向即可访问另一台服务器上的文件?

我有一个受密码保护的服务器,其中存储了我希望用户只有拥有权限才能访问的文件。

在 NGiNX 配置中我希望能够执行如下操作:

proxy_pass http://username:password@domain:80/

这样用户就可以访问这个地址:

http://img.website.com/bob.jpg

然后在服务器中配置将指向该地址:

http://username:password@domain:80/bob.jpg

还有没有办法调用脚本(最好是 PHP)来查看访问文件的人是否已经登录。

我的会话保存在另一台服务器上(在 Redis DB 上),所以如果无法使用 PHP 来完成,还有其他方法吗?

那么我该如何配置它呢?

答案1

请查看以下两个链接以了解关于在代理上下文中使用 nginx 进行 HTTP 身份验证的第一个问题:

这是一个基本的例子:

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 文档。在那里,您会找到许多有用的示例,可帮助您入门:

相关内容