Am stiva Docker Swarm cu nginx ca proxy invers configurat pe vps-ul OVH. Încercam să folosesc directivele allow/deny în locație, dar dacă setez deny all; nu ar funcționa nici măcar pentru ip-ul adăugat cu directiva allow. După ce m-am uitat la jurnalele de acces, am aflat că toate cererile ar fi venit de la IP 10.0.0.2. Acum am încercat să fac ca IP-ul real să fie afișat cel puțin în jurnale, dar fără succes.
Există nginx.conf-ul meu:
evenimente{}
http {
harta $http_upgrade $connection_upgrade {
upgrade implicit;
'' închide;
}
error_log /dev/stdout info;
log_format json_combined escape=json
'{'
'"time":"$time_local",'
„"httpRequest":{'
'"requestMethod":"$request_method",'
'"requestUrl":"$scheme://$host$request_uri",'
'"requestSize":$request_length,'
'"status":"$status",'
'"responseSize":$bytes_sent,'
'"userAgent":"$http_user_agent",'
'"remoteIp":"$remote_addr",'
'"serverIp":"$server_addr",'
'"referer":"$http_referer",'
'"latency":"${request_time}s",'
'"protocol":"$server_protocol"'
'}'
'}';
resolver 127.0.0.11 valid=30s;
includ /etc/nginx/mime.types;
includ /etc/nginx/sites-enabled/*.*;
}
proxy.conf:
set_real_ip_de la 10.0.0.0/8;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Gazdă $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $schema;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune $connection_upgrade;
proxy_set_header X-NginX-Proxy true;
proxy_cache_bypass $http_upgrade;
proxy_http_versiunea 1.1;
proxy_read_timeout 20d;
proxy_buffering dezactivat;
proxy_request_buffering dezactivat;
proxy_intercept_errors activat;
http2_push_preload activat;
si locatia mea:
locație /api/ {
permiteți XXX.XX.XX.X;
nega totul;
includ /etc/nginx/proxy-options/proxy.conf;
set $ocelot ocelot-service;
proxy_pass http://$ocelot$uri$is_args$args;
proxy_ssl_session_reuse dezactivat;
proxy_redirect dezactivat;
client_max_body_size 5M;
}
Ce pot face pentru ca nginx să înregistreze IP-ul real al solicitantului și, dacă este posibil, să folosesc IP-ul pentru a compara cu directiva allow?