能用nginx来代理并重写域名吗?

能用nginx来代理并重写域名吗?

由于疫情影响,我们所有的校园都已关闭,我们试图找到方法让学生在 IP 范围限制的情况下访问外部图书馆服务。

我们希望在代理服务上有类似这样的功能:https://libdb.net.proxy.mysite.org/whatever将为您提供https://libdb.net/whatever并且 libdb.net 将被欺骗,认为所有访问都来自 proxy.mysite.org,并且 libdb.net 下的所有链接都将被重写。这必须适用于很多域名。原则上,它必须适用于任何网站。

我们可以使用 *.proxy.mysite.com 的 DNS 通配符来修复解析,但我无法弄清楚 nginx 的魔力。任何建议都非常感谢。

(EZproxy 似乎可以解决问题,但在我收到报价请求的答复之前,我们正在寻找替代方案)

答案1

请参阅下面的代码片段:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name _;

    if ($host ~ (.+)\.proxy.mysite.com$) {
            set $proxyhost $1;
    }

    location ~ {
            proxy_set_header Host $proxyhost;
            proxy_pass https://$proxyhost/;
    }

}

这应该适用于预期场景。代码片段仅配置为使用 http,而不是 https

相关内容