如何将头文件传递给Nginx的远程error handling程序

我有nginx服务器发送404错误到1.1.1.1:8081 Apache httpd。 如何将所有原始标题传递给错误服务器?

我有以下configuration:

server { error_page 404 = http://1.1.1.1:8081/404.php?remote=1; } 

当在404.php中检查标题时,我得到客户端的原始ip,但没有来自客户端的cookie; 另外,我得到请求的uri设置为404.php?remote=1而不是导致404错误的url:

 <?php // 404.php file file_put_content("log.txt", $_SERVER['REQUEST_URI'], FILE_APPEND); // :( file_put_content("log.txt", $_SERVER['REMOTE_ADDR'], FILE_APPEND); // Ok file_put_content("log.txt", $_COOKIE['MyCookie'], FILE_APPEND); // :( empty ?> 

这不是很好,但是一个可能的解决scheme是使用带有代理传递的命名位置到您的error handling程序,然后根据需要添加所需信息的自定义标题。 这意味着也要定制404.php文件。

例如:

 error_page 404 = @handler; location @handler { rewrite ^ /404.php?remote=1? break; proxy_set_header X-Request $request_uri; proxy_set_header X-Remote $remote_addr; proxy_set_header X-Cookie $cookie_some_cookie_name; proxy_pass http://1.1.1.1:8081; }