nginx - 多个带有清漆的子域
问题描述
现在我有了这个设置
80端口用nginx重定向到443端口,然后它使用varnish作为上游,现在当它回来时,我需要在nginx中设置一些变量,fx
en.mydomain.com
我的域带有子域,例如de.mydomain.com
server {
server_name 127.0.0.1;
listen 8080;
$VAR = en;
}
server {
server_name 127.0.0.1;
listen 8080;
$VAR = de;
}
我如何确定使用哪个域来实现这一点 - 我认为我需要有多个端口,然后 varnish 应该根据域重定向到每个后端,如何设置 varnish 以根据域返回到后端?
解决方案
如果每个子域的 Varnish 后端的 IP 地址和端口都相同,则不必担心:Host
每个请求的标头会导致 Varnish 中的缓存键不同,但 Nginx 也会根据这个Host
标题。
在您共享的配置中,您应该确保en.mydomain.com
并且de.mydomain.com
是 Nginx 的一部分server_name
。这将允许 Nginx 匹配正确的主机名。
如果您转到en.mydomain.com
,Varnish 将提取主机和 URL,并将其转换为唯一的缓存键。如果它需要从 Nginx 获取数据,Nginx 会为你处理。