nginx. Test which location used to process request

后端 未结 3 1456
既然无缘
既然无缘 2020-12-28 14:56

I\'m wondering how do I know if a particular location[s] used to process request in nginx.

E.g.:

# 1
location / {}

# 2
location ~ /[\\w         


        
相关标签:
3条回答
  • 2020-12-28 15:24

    The add_header trick is how I would do it to.

    I'm at work right now, so I can't test but you might possibly get something in the logfile i you set the error_log level to:

    • debug: you're nginx needs to be built using --with-debug for this to work, you can check that with the nginx -V command
    • notice: if debug logging isn't enabled
    0 讨论(0)
  • 2020-12-28 15:25

    If you just want to see which block was used, and don't care about returning otherwise valid results, it might be more straight-forward to use return rather than add_header.

    location / {
        return 200 'location 1';
    }
    
    location ~ /(\w+\-)\.html {
        return 200 'location 2';    
    }
    
    location @named {
        return 200 'location named';
    }
    
    0 讨论(0)
  • 2020-12-28 15:38

    A word of warning on this approach. I found it's a bad idea to use location as your debug header, since Location is a real header used by the HTTP response 301.

    So if (like me) in your testing you end up with this:

    HTTP/1.1 301 Moved Permanently
    ...
    Location: http://mydomain.com/banana/
    location: banana
    

    Then your browser will freak out and report Duplicate headers received from server. So use locationdebug or something safe.

    0 讨论(0)
提交回复
热议问题