Uso Cloudflare para mis dominios.
He notado una situación en mi archivo access.log en la que cuando alguien intenta conectarse directamente (a través de la dirección IP), el valor de $http_x_forwarded_for es "-", lo cual es correcto y por diseño, ya que Cloudflare no configura $http_x_forwarded_for. .
Quiero hacer lo siguiente (ver primero si bloque), pero nginx no lo permitirá en el archivo principal nginx.conf. Hay otra manera de hacer esto?
if ($http_x_forwarded_for = '-') { $http_x_forwarded_for = $remote_addr; } # format: eg, $http_cf_ipcountry derives from the Cloudflare header HTTP_CF_IPCOUNTRY; # the others too follow this format log_format complete '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$host" ' '"$http_x_forwarded_for" "$http_cf_ipcountry" "$http_accept_language"';Usar mapas en lugar de if / else :)
Agregue esto a su bloque de contexto http:
log_format complete '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$host" ' '"$logforwarded" "$http_cf_ipcountry" "$http_accept_language"'; map $http_x_forwarded_for $logforwarded { default $http_x_forwarded_for; '' $remote_addr; } La entrada del registro de acceso se verá así: ::1 - - [02/Mar/2020:05:51:46 -0500] "GET / HTTP/1.1" 200 4 "-" "curl/7.29.0" "localhost" "::1" "-" "-"