Назад | Перейти на главную страницу

Как сделать так, чтобы обратный прокси-сервер nginx пропускал 503 страницы с ошибками к клиенту?

Я использую 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. И вы уже настроили его для обработки статического контента. Было бы легко позволить ему управлять динамическим контентом, не так ли?