像这样的东西应该几乎可以工作:
server {
location / {
# simple version
if ( $host ~ "user1.example.com" ) {
proxy_pass http://example.com/user1;
}
# generic version
if ( $host ~ ^(.+)\.example\.com$ ) {
proxy_pass http://example.com/$1;
}
}
}
但我怀疑它是否会按预期工作,因为代理 url 中的“/user1”部分,但我不确定后果。
另一种肯定会起作用的方法是使用相同的 nginx 服务器为所有应用程序提供服务,或者为每个其他 nginx 分配一个给定的端口。这是我将如何做到这一点:
server {
location / {
if ( $host ~ "user1.example.com" ) {
proxy_pass http://127.0.0.1:8000;
}
if ( $host ~ "user2.example.com" ) {
proxy_pass http://127.0.0.1:8001;
}
}
}
上次我这样做是为了一个大学项目,我使用了一个特定的插件来处理它,可能也有一些插件可以为 nginx 做这个,但我在快速搜索后没有找到任何插件。