Linux 如何在web请求通过apache规则时查看它

Linux 如何在web请求通过apache规则时查看它,linux,apache,unix,Linux,Apache,Unix,我编写了一些apache规则,例如: RewriteEngine on RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] RewriteRule .* ws://127.0.0.1:8443%{REQUEST_URI} [P,L] 如何调试以查看apache进程每个阶段的请求?例如: 它以X开头 Apache应用了规则1,它变成了Y Apache应用了规则2,它变

我编写了一些apache规则,例如:

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8443%{REQUEST_URI} [P,L]
如何调试以查看apache进程每个阶段的请求?例如:

  • 它以X开头
  • Apache应用了规则1,它变成了Y
  • Apache应用了规则2,它变成了Z
我如何确切地看到这个过程中发生了什么

本质上,我想弄明白的是为什么websocket请求是404'ing。以下是请求的内容:

Request URL: wss://mysite.com/ws/registration/1234/
Request Method: GET
Status Code: 404 Not Found
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: xh+D6ed0N9dL8p42ADD2lQ==
Sec-WebSocket-Version: 13
Upgrade: websocket
我想看到的是:

  • Apache是否收到请求?(显然是这样)
  • 是否应用了任何重写规则
  • 请求“结束”为什么
  • 最后,您是否可以给出任何“打印”规则,例如查看{REQUEST_URI}是什么

  • 也许最简单的方法是设置最高级别的调试(默认设置为
    error
    )--

    这是最高级别,可能包含太多信息(例如SSH连接信息)。但是,您可以一直工作到适当的调试级别。请注意,您的服务器在调试时会变得“慢”,因此在调试完成后将其恢复到适当的级别

    此外,您还可以通过grep搜索输出来查找您想要查找的特定模块或部件(例如
    mod_write
    ):

    # /etc/apache2/apache2.conf
    LogLevel trace8
    
    $ tail -f /var/log/apache2/error.log | grep --line-buffered mod_rewrite