nginx - 子域作为查询字符串参数?
nginx - Subdomain as querystring parameter?
我有一个简单的单页 Web 应用程序,它接受一个查询字符串参数 name
。此 Web 应用程序当前打印参数的值;因此,位于 http://example.com/app/?name=person1
的页面显示文本 person1
.
我想使用 nginx 在内部将请求路由到 http://person1.example.com/
到 http://example.com/app/?name=person1
,以便检索相同的文本。
理想情况下,我还想让子域的名称可用于 PHP 或 Node.js 进程,以便在不同的子域中重用相同的应用程序文件,从而允许应用程序本身根据客户端当前正在访问的 URL 在内部处理请求。
但是,我想动态地执行此操作,而无需为每个子域设置新的虚拟主机。
这可以用 nginx 上的动态虚拟主机来完成吗?如果可以,怎么做?
谁能指出我正确的方向,或帮助解释我难以理解的内容?
此外,是否有比我尝试做的更好的替代方案?
如果外部重定向没问题,我会尝试如下操作:
map $host $subdomain {
~^(?<sub>.+)\.[^\.]+\.[^\.]+$ $sub;
}
server {
listen 80 default_server;
server_name _;
if ($subdomain) {
return 301 http://example.com/app/?name=$subdomain;
}
}
如果需要内部重定向,可能需要重写或proxy_pass。
我有一个简单的单页 Web 应用程序,它接受一个查询字符串参数 name
。此 Web 应用程序当前打印参数的值;因此,位于 http://example.com/app/?name=person1
的页面显示文本 person1
.
我想使用 nginx 在内部将请求路由到 http://person1.example.com/
到 http://example.com/app/?name=person1
,以便检索相同的文本。
理想情况下,我还想让子域的名称可用于 PHP 或 Node.js 进程,以便在不同的子域中重用相同的应用程序文件,从而允许应用程序本身根据客户端当前正在访问的 URL 在内部处理请求。
但是,我想动态地执行此操作,而无需为每个子域设置新的虚拟主机。
这可以用 nginx 上的动态虚拟主机来完成吗?如果可以,怎么做? 谁能指出我正确的方向,或帮助解释我难以理解的内容?
此外,是否有比我尝试做的更好的替代方案?
如果外部重定向没问题,我会尝试如下操作:
map $host $subdomain {
~^(?<sub>.+)\.[^\.]+\.[^\.]+$ $sub;
}
server {
listen 80 default_server;
server_name _;
if ($subdomain) {
return 301 http://example.com/app/?name=$subdomain;
}
}
如果需要内部重定向,可能需要重写或proxy_pass。