Php 如何重定向来自其他服务器的内容,但不更改URL

Php 如何重定向来自其他服务器的内容,但不更改URL,php,apache,redirect,nginx,rewrite,Php,Apache,Redirect,Nginx,Rewrite,我有一个任务: 我有一个主服务器托管一个应用程序与所有业务物流 还有其他服务器(将来可能是云)充当文件存储 用户如何获取一些文件?(但只有那些有权访问的人) 我的想法是: 在ServerMain上,我将使用Nginx(作为代理)+Apache 第一个用户向Nginx发出请求 Nginx代理到Apache。 Apache检查是否可以访问该文件。 如果允许的话,Apache会返回一个重定向到另一台服务器(带有指向内容的路径)。 如果拒绝,则Apache返回拒绝响应 因此,用户无法看到指向其他服务器的

我有一个任务: 我有一个主服务器托管一个应用程序与所有业务物流

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

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

我的想法是:

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

因此,用户无法看到指向其他服务器的链接

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

我的爱人: 端口80上的Nginx工作 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);

问题
您正在使用标题('Location:'。$newURL);将带有新url的标题返回到浏览器(导致浏览器重定向到新url)

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

听起来您在尝试进行负载平衡,如果这是真的,那么这是一篇很好的文章:这是另一篇使用Nginx+Apache@ryan_-naddy的文章,听起来一点也不像负载平衡。关键问题是保持url隐藏,而负载平衡并不能做到这一点。是的,主任务不会向客户url显示其他服务器的内容