繁体   English   中英

Nginx proxy_pass到动态主机

[英]Nginx proxy_pass to dynamic host

目前,我已经设置了一个PHP脚本,其中包含一大块代码,这些代码从动态位置(来自数据库)读取文件,并以块的形式回显给用户。 它基本上是一个文件流脚本来隐藏原始文件的位置。

但是,这会带来很大的开销,因为PHP会在每次下载时堵塞我的服务器进程。 相反,我想使用nginx,我想知道是否可以动态地将proxy_pass指令设置为我的数据库中的值。

例如,如果我的网站在http://example.com/download?hash=abcd上有一个页面,我需要从我的MySQL数据库中查找哈希abcd的下载URL,然后使用nginx和proxy_pass提供该文件。

有谁知道我怎么能做到这一点?

您无法从nginx直接连接到mysql,但您可以添加代理的位置

location ~ /proxy/(?<domain>[^/]*)(?<url>/.*) {
    internal;
    proxy_pass http://$domain$url;
}

并在您的应用程序中使用X-Accel-redirect头,它将连接到数据库,通过哈希获取下载URL并设置为“X-Accel-Redirect:http: //your.domain.com/proxy/other.domain.com /path/to/file.txt “。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM