将URI重定向/下载到同一域上的子域

时间:2014-03-19 22:09:57

标签: php nginx server-administration

我完成了一个应用程序,该应用程序具有NGINX托管的下载系统:

http://dashboard.myapp.com

下载的网址是:

http://dashboard.myapp.com/download/file-slug

此页面是一个常规的PHP页面,需要一些用户输入,然后PHP处理实际的文件下载,它不是文件的直接路径。

由于这些下载网址将公开发布,因此我想抛弃该信息中心子域名。

默认域名(myapp.com)已经在使用wordpress设置:

    location / {
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

有一种简单的方法可以获得:

http://myapp.com/download/file-slug

表现得好像:

http://dashboard.myapp.com/download/file-slug

访问了

,没有实际重定向?

2 个答案:

答案 0 :(得分:1)

试试这个 - 放在myapp.com的服务器块中,放在另一个位置块之外的任何地方。将根设置为与dashboard子域相同的根(如果在同一服务器上)。该脚本会将自己视为myapp.com而不是dashboard.myapp.com,但它应该保留其余的框架规则。如果这不起作用,请尝试下一个选项。

location /download/file-slug { 
    root /path/folder;  
    try_files  $uri $uri/ /index.php?q=$uri&$args;
}

另一种选择是通过Nginx进行代理。此选项实际上在当前位置运行脚本,像客户端通过dashboard.myapp.com一样访问它。请参阅proxy_pass上的Nginx.org文档。

location /download/file-slug { proxy_pass http://dashboard.myapp.com/download/file-slug; }

答案 1 :(得分:0)

我只能用Nginx解决这个问题。

在myapp.com配置文件中,我添加了:

    location ~ /download/(.*) {
            resolver 8.8.8.8; 
            proxy_pass http://dashboard.myapp.com/download/$1;
    }

解析器8.8.8.8实际上使用的是Google DNS。如果没有这一行,我会得到一个“无法解析的解析器”错误。