Я использую Magento (приложение PHP для электронной коммерции) за nginx в качестве обратного прокси для Apache, на котором запущено приложение PHP. Статический контент обслуживается непосредственно nginx. В Magento есть «режим обслуживания», в котором используется HTTP-ответ 503. В моей конфигурации, когда режим обслуживания включен, nginx возвращает пустую страницу с ответом 500 вместо хорошей страницы режима обслуживания Magento с ответом 503. Как я могу заставить nginx пропускать страницу 503 к клиенту?
Вот моя конфигурация nginx:
upstream examplecluster { server 1.2.3.4:80; } server { listen 1.2.3.5:80; server_name www.example.com; root /var/www/example.com/www; # security location ~ (/(app/|includes/|lib/|pkginfo/|var/|report/config.xml|downloader/(pearlib|template|Maged)/)|/\.svn/|/\.ht.+) { return 404; } location ~ \.php$ { proxy_pass http://examplecluster; proxy_redirect default; } # static content location / { try_files $uri @apache; expires 7d; } # Apache location @apache { proxy_pass http://examplecluster; proxy_redirect default; } }
Оказалось, что при обслуживании страницы 503 действительно произошла ошибка, поэтому nginx правильно пересылал ответ.
Однако соответствующая настройка nginx proxy_intercept_errors off;
который уже установлен по умолчанию ..
Я знаю, что это довольно старая ветка. - Но почему бы вам просто не позволить nginx обслуживать как статический, так и динамический контент?
Я имею в виду, что nginx уже является веб-сервером, который можно использовать для запуска приложения magento. И вы уже настроили его для обработки статического контента. Было бы легко позволить ему управлять динамическим контентом, не так ли?