Php 如何重定向来自其他服务器的内容,但不更改URL
我有一个任务: 我有一个主服务器托管一个应用程序与所有业务物流 还有其他服务器(将来可能是云)充当文件存储 用户如何获取一些文件?(但只有那些有权访问的人) 我的想法是: 在ServerMain上,我将使用Nginx(作为代理)+Apache 第一个用户向Nginx发出请求 Nginx代理到Apache。 Apache检查是否可以访问该文件。 如果允许的话,Apache会返回一个重定向到另一台服务器(带有指向内容的路径)。 如果拒绝,则Apache返回拒绝响应 因此,用户无法看到指向其他服务器的链接 但这对我不起作用,用户可以看到重定向url 我的爱人: 端口80上的Nginx工作 Apache在端口8080上的工作 nginx配置主机Php 如何重定向来自其他服务器的内容,但不更改URL,php,apache,redirect,nginx,rewrite,Php,Apache,Redirect,Nginx,Rewrite,我有一个任务: 我有一个主服务器托管一个应用程序与所有业务物流 还有其他服务器(将来可能是云)充当文件存储 用户如何获取一些文件?(但只有那些有权访问的人) 我的想法是: 在ServerMain上,我将使用Nginx(作为代理)+Apache 第一个用户向Nginx发出请求 Nginx代理到Apache。 Apache检查是否可以访问该文件。 如果允许的话,Apache会返回一个重定向到另一台服务器(带有指向内容的路径)。 如果拒绝,则Apache返回拒绝响应 因此,用户无法看到指向其他服务器的
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);
问题
您正在使用标题('Location:'。$newURL);将带有新url的标题返回到浏览器(导致浏览器重定向到新url)
解决方案
如果用户经过身份验证,您可以向数据服务器发出curl请求并通过返回输出,而不是在该位置提供真实的URL。听起来您在尝试进行负载平衡,如果这是真的,那么这是一篇很好的文章:这是另一篇使用Nginx+Apache@ryan_-naddy的文章,听起来一点也不像负载平衡。关键问题是保持url隐藏,而负载平衡并不能做到这一点。是的,主任务不会向客户url显示其他服务器的内容