email — Обработка ошибок с помощью php на обратном прокси-сервере nginx и ответ по почте администраторам

Вопрос в том:
Есть ли способ получить доступ к ответу сервера из php после того, как Nginx обнаружит ошибку, и отправит ответ сервера администратору, одновременно показывая посетителю страницу с ошибкой?

Лучший обходной путь на данный момент — отправлять соответствующую информацию напрямую с внутренних серверов, но я просто не могу заставить их отправлять мне электронные письма. Я хочу обнаружить код ответа об ошибке HTTP в обратном прокси-сервере и действовать соответствующим образом независимо от того, что делает внутренний сервер.

В настоящее время я могу делегировать страницы ошибок в PHP, и оттуда я могу отправить письмо администратору с информацией, полученной от nginx о запросе, но он обнаруживает все как запрос GET, теряет всю информацию POST, и я нашел нет способа получить доступ к фактическому ответу, поэтому я могу отправить его администратору по почте, поэтому в основном я отправляю очень неполный отчет об ошибке.

Есть ли способ не потерять информацию POST и прочитать ответ с сервера после делегирования запроса в PHP? Есть ли другой способ отправить страницу с ошибкой по почте, в то же время показать настроенную страницу с ошибкой?

Пожалуйста, имейте в виду, что внутренние серверы — это удаленные машины, которые не обязательно находятся под моим контролем. Эти серверы отправляют Nginx всю информацию, которая ему необходима для того, чтобы делать то, что я хочу, просто кажется, что в nginx отсутствует функция, но я надеюсь, что кто-то может придумать обходной путь или что-то в этом роде …

Это моя текущая настройка nginx (параметры GET, прикрепленные к error_page я нашел единственный способ передать некоторую информацию в PHP о бэкэнд-сервере, который сгенерировал ошибку):

location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 4s;
proxy_pass $scheme://hsbservers_$scheme;
proxy_next_upstream error timeout invalid_header http_502 http_504;
proxy_intercept_errors on;
server_tokens off;
}

error_page 500 503 502 504 /error.php?err=$status&svr=$upstream_addr&uperr=$upstream_status&sT=$upstream_response_time&pT=$request_time;

location ~ error\.php$ {
try_files $uri /index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Это пример письма, которое я отправляю из PHP для запроса POST, который выдал ошибку:

_SERVER
Array
(
[USER] => www-data
[HOME] => /var/www
[FCGI_ROLE] => RESPONDER
[QUERY_STRING] => err=500&svr=45.79.216.211:443&uperr=500&sT=1.476&pT=1.610
[REQUEST_METHOD] => GET
[CONTENT_TYPE] => multipart/form-data; boundary=----WebKitFormBoundarydq4hsdTNEzIU6Vve
[CONTENT_LENGTH] => 9550
[SCRIPT_FILENAME] => /usr/share/nginx/html/error.php
[SCRIPT_NAME] => /error.php
[REQUEST_URI] => /node/add/article
[DOCUMENT_URI] => /error.php
[DOCUMENT_ROOT] => /usr/share/nginx/html
[SERVER_PROTOCOL] => HTTP/1.1
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_SOFTWARE] => nginx/1.4.6
[REMOTE_ADDR] => 181.49.223.170
[REMOTE_PORT] => 42033
[SERVER_ADDR] => 172.31.55.210
[SERVER_PORT] => 443
[SERVER_NAME] => _
[HTTPS] => on
[REDIRECT_STATUS] => 200
[HTTP_HOST] => hsbnoticias.com
[HTTP_CONNECTION] => keep-alive
[HTTP_CONTENT_LENGTH] => 9550
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*\/*;q=0.8
[HTTP_ORIGIN] => https://hsbnoticias.com
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36
[HTTP_CONTENT_TYPE] => multipart/form-data; boundary=----WebKitFormBoundarydq4hsdTNEzIU6Vve
[HTTP_REFERER] => https://hsbnoticias.com/node/add/article
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_LANGUAGE] => es-ES,es;q=0.8,en;q=0.6
[HTTP_COOKIE] => /* I removed this for security */
[PHP_SELF] => /error.php
[REQUEST_TIME_FLOAT] => 1456243321.1031
[REQUEST_TIME] => 1456243321
)_POST
Array
(
)_GET
Array
(
[err] => 500
[svr] => 45.79.216.211:443
[uperr] => 500
[sT] => 1.476
[pT] => 1.610
)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]