0

我有一个任务:我有一个主服务器托管一个包含所有业务逻辑的应用程序。

还有其他服务器(将来可能是云)充当文件存储。

用户如何获取一些文件?(但只有那些有权访问的人)。

我的想法:

在 ServerMain 上,我将拥有 Nginx(作为代理)+ Apache 第一个用户向 Nginx 向 Apache 发出 Nginx 代理请求。Apache 检查对文件的访问。如果允许,则 Apache 返回一个重定向到另一台服务器(带有内容的路径)。如果被拒绝,则 Apache 返回拒绝响应。

因此,用户看不到其他服务器的链接。

但这对我不起作用,用户可以看到重定向网址。

我的参数:Nginx 在端口 80 上工作 Apache 在端口 8080 上工作

nginx 配置主机

server {

        listen  127.0.0.1:80;
        server_name ap-file.loc;


        server_name_in_redirect on;

        location / {
                proxy_pass      http://127.0.0.1:8080/;
                proxy_redirect   off;
                proxy_set_header  Host $host;
                proxy_set_header  X-Real-IP $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size 10m;
                proxy_connect_timeout 90;
        }
}

php页面的代码,重定向到其他服务器

<?php
$newURL = 'http://1.bp.blogspot.com/_16lyaJiGldI/TBekxqet-JI/AAAAAAAAAis/jTGCN4Wfo8Q/s320/smile.jpg';

header('Location: '.$newURL);

该代码适用于apache。

告诉我我做错了什么?可能是Nginx的设置?

4

1 回答 1

0

您使用的问题header('Location: '.$newURL); 它将带有新网址的标头返回给浏览器(导致浏览器重定向到新网址)

解决方案 如果用户通过身份验证,您可以向数据服务器发出 curl 请求,并通过返回输出,而不是在该位置提供真实 URL。

于 2016-07-19T07:50:28.390 回答