Users with a mobile app monitoring applications behind an NGINX server will experience missing server-side correlation. This is due to a security standard used by NGINX that acts on underscores in headers such as the metadata passed by the App agent.
Example:
["Accept: application/json" --header "ADRUM: isAjax:true" --header "ADRUM_1: isMobile:true"]
According to NGINX documentation, this is done in order to prevent ambiguities when mapping headers to CGI variables, as both dashes and underscores are mapped to underscores during that process.
curl -v --header "ADRUM: isAjax:true" --header "ADRUM_1: isMobile:true" <http[s]://<endpoint>>
< ADRUM_0: g:a3e4e4a4-0406-4fc2-819e-ea6521359a3c84480
< ADRUM_1: i:563
< ADRUM_2: n:customer1_cef43e07-de57-4fce-939a-54a6c5dcdf56
< ADRUM_0: clientRequestGUID:3de4f995-e0ba-4d59-971f-d653e1ea44cf
< ADRUM_1: globalAccountName:customer1_7cc5e33b-579e-4e57-b302-b1eb63b30a0c
The user must explicitly set underscores_in_headers on;
, to prevent NGINX from silently dropping HTTP headers that contain underscores.