我有一个 SaaS 应用程序,用户可以在其中输入他们的域名。该应用程序使用传入请求的主机名,根据他们为其帐户输入的域来确定帐户,加载设置、主题等。
我不想为用户添加的每个新域都添加一个新的 Nginx 主机,这引出了我的解决方案,其中我让所有人都将他们的www
CNAME 指向我服务器上的静态子域(例如all-websites.[my domain].com
),将每个根请求重定向到其各自的www
版本(例如example.com
重定向到www.example.com
)。
上述解决方案是否有效?如果有效,有什么缺点吗?如果不行,您是否知道更好的解决方案,同时仍然不需要我在每次用户注册时更新 Nginx 配置(我也不想让脚本为我编辑配置)。
答案1
使用server
listen
指令,这样 nginx 在没有匹配项时就会使用该指令server_names
。听起来你总是代理一个应用程序,而该应用程序知道如何处理不同的主机,但如果有必要,你可以使用$host
nginx 配置中的变量。
listen 80 default_server;