Para qualquer um que possa se deparar com isso, as soluções foram as seguintes configurações do Nginx:
# Map preview URLs to shared or dedicated IP addresses
map $host $i {
default [IP for Shared VHosts];
123.ourcms.com [Dedicated IP Address 1]; # www.example1.com;
456.ourcms.com [Dedicated IP Address 2]; # www.example2.com;
789.ourcms.com [Dedicated IP Address 3]; # www.example3.com;
}
# Map preview URLS to appropriate hostname
map $host $h {
123.ourcms.com www.example1.com;
456.ourcms.com www.example2.com;
789.ourcms.com www.example3.com;
}
...
# Configuration for "preview" server
server {
listen [OurCMSIPAddress]:80;
listen [OurCMSIPAddress]:443 ssl;
error_log /var/log/nginx/error-ourcms.com.log debug;
root /var/www/ourcms.com;
server_name ~^(.*)\.ourcms\.com$;
ssl_certificate /etc/nginx/conf.d/ourcms.com.chained.crt;
ssl_certificate_key /etc/nginx/conf.d/ourcms.com.key;
location / {
proxy_pass http://$i;
proxy_set_header Host $h;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
O truque, e eu acho que o @MarkStosberg estava se referindo a isso e eu não entendi, foi procurar o endereço IP e para o site pré-visualizado. Além disso, os blocos de servidores de cada host virtual precisavam conter listen [SharedIPForVhosts]:80
e não apenas listen *:80
.