Я понял это. Проблема была
proxy_set_header Host $host;
https://blog.example.com/ - это виртуальный хост, и nginx отправляет ему запрос, так как запрос будет https://example.com/blog, запутав логи виртуальных хостов c. Сама ошибка не связана с причиной проблемы. На этом URL-адресе (example.com/blog) уже был сломан сайт WordPress.
Решение:
proxy_set_header Host blog.example.com;
это позволит правильно получить правильный сайт с виртуального хоста, а затем получить результат отправляется на прокси-сервер, который преобразует его в example.com/blog