Nginx перенаправление сервера на сервер ошибок не работает - PullRequest
0 голосов
/ 25 января 2020

Я искал решение этой проблемы. Вот мои настройки.

Сервер A: 192.168.1.99

Nginx Сервер Последняя версия: версия 01-2020. Служит в качестве обратного прокси-сервера для всех сайтов, обслуживаемых сервером B.

Apache Сервер (служит двум целям): 1. Обслуживать сайты, 2. Служить сервером ошибок, если «Сервер B не работает»

Сервер B: 192.168.1.100

Apache Сервер: сервер основного сайта.

Требование:

Когда сервер B не работает, сервер A должен служить в качестве " Страница ошибки »с тем же доменным именем. Например:

, если сервер B обслуживает: example.com, а если он не работает, то сервер A будет отображать страницу с ошибкой, как показано ниже:

example.com / error404. html если ошибка 502 ошибка, она должна обслуживаться example.com/error502.html с сервера A.

Вот мой файл конфигурации: Сервер A: (Nginx Server) / etc / nginx / conf .d / example.com.conf

server {
   listen 80;
   if ($host = www.example.com ) {
        return 301 https://example.com$request_uri;
       #  return 301 https://$host$request_uri;
    } # managed by Certbot

   if ($host = example.com ) {
        return 301 https://example.com$request_uri;
       #  return 301 https://$host$request_uri;
    } # managed by Certbot

}

server {
  listen 443 ssl;

  server_name www.example.com;
  root /var/www/example.com;

   ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

   ssl_session_cache builtin:1000 shared:SSL:10m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
   ssl_prefer_server_ciphers on;

  location / {
      proxy_set_header  Host $host;
      proxy_set_header  X-Real-IP $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto $scheme;
      proxy_connect_timeout       300;
      proxy_send_timeout          300;
      proxy_read_timeout          300;
      send_timeout                300;
      proxy_intercept_errors on;
      error_page 404 500 502 503 504 = @fallback;

      proxy_pass https://192.168.1.100:9443/;
      proxy_read_timeout  90;
     #rewrite http://www.example.com/ https://www.example.com/ redirect;
      proxy_redirect https://192.168.1.100:9443/ https://example.com;
  }

  index index.php index.html index.htm index.nginx-debian.html;

  location ~ \.php$ {
     include snippets/fastcgi-php.conf;
     fastcgi_pass unix:/run/php/php7.4-fpm.sock;
  }

  location ~ /\.ht {
     deny all;
  }

  location @fallback {
      root /var/www/example.com;
      rewrite ^/(.*) https://example.com;
      #proxy_pass https://192.168.1.99:6443/;
      #proxy_redirect https://192.168.1.99:6443/ https://example.com;
      #rewrite ^/(.*) https://192.168.1.99:6443/  permanent;
  }


}
...