我完成了一个应用程序,它的特点是一个下载系统,托管在NGINX:
http://dashboard.myapp.com下载的URL是:
http://dashboard.myapp.com/download/file-slug这个页面是一个普通的PHP页面,需要一些用户输入,然后PHP处理实际的文件下载,它不是文件的直接路径。
由于这些下载url将是公开可用的,我想放弃仪表板子域。
默认域名(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被访问,而没有实际重定向?
试试这个-在你的服务器块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
访问它一样。请参阅Nginx.org上的proxy_pass文档。
location /download/file-slug { proxy_pass http://dashboard.myapp.com/download/file-slug; }
我只能用Nginx来解决这个问题。
在myapp.com配置文件中,我添加了:
location ~ /download/(.*) {
resolver 8.8.8.8;
proxy_pass http://dashboard.myapp.com/download/$1;
}
解析器8.8.8.8实际上使用的是Google DNS。如果没有这一行,我就会得到一个"没有解析器定义来解析"的错误。