我有一个任务: 我有一台主服务器托管一个包含所有业务物流的应用程序。
还有其他服务器(可能是未来的云)充当文件存储。
用户如何获取某些文件? (但只有那些有权访问的人)。
我的想法:
在ServerMain上我将拥有Nginx(作为代理)+ Apache 第一个用户向Nginx发出请求 Nginx代理到Apache。 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设置吗?
答案 0 :(得分:0)
问题 您正在使用标题(&#39;位置:&#39;。$ newURL);它将带有新网址的标题返回给浏览器(导致浏览器重定向到新网址)
<强>解决方案强> 您可以向数据服务器发出curl请求,并在用户通过身份验证后返回输出,而不是在该位置提供真实的URL。