В мире веб-разработки есть немало «тихих убийц» — тех незаметных на первый взгляд проблем, которые способны подорвать стабильность даже самого продуманного проекта. Одной из таких коварных ловушек является рассинхронизация временных зон между операционной системой, PHP и MySQL. На первый взгляд, всё работает: сайт отображается, заказы поступают, база данных наполняется. Но стоит заглянуть чуть глубже — и выясняется, что события в логах происходят «в будущем», заказы фиксируются с задержкой в несколько часов, а CRON-задачи запускаются вовсе не тогда, когда должны. Всё это — не магия, не баг, не «странное поведение сервера», а прямое следствие того, что каждый компонент системы живёт в своём часовом поясе.
Представьте себе древний город, окружённый высокими стенами. Ворота в этот город — единственный путь внутрь. Но что, если за этими воротами нет ни одного дома, ни одного жителя? Всё, что вы видите — лишь отражение другого, настоящего города, расположенного за горами. Вы входите, гуляете по улицам, разговариваете с людьми — и всё кажется настоящим. Но на самом деле вы общаетесь с зеркалом, с иллюзией, созданной искусным архитектором. Так работает обратное проксирование — и Nginx — это тот самый архитектор, который строит эти виртуальные ворота.