ฉันมี Docker Swarm stack ที่มี nginx เป็นพร็อกซีย้อนกลับที่ตั้งค่าบน OVH vps ฉันพยายามใช้คำสั่งอนุญาต/ปฏิเสธในตำแหน่งที่ตั้ง แต่ถ้าฉันตั้งค่าปฏิเสธทั้งหมด มันจะไม่ทำงานแม้แต่กับ ip ที่เพิ่มด้วยคำสั่ง allow หลังจากดูบันทึกการเข้าถึง ฉันพบว่าคำขอทั้งหมดที่ถูกกล่าวหาว่ามาจาก IP 10.0.0.2 ตอนนี้ฉันพยายามรับ IP จริงก่อนอย่างน้อยก็แสดงในบันทึก แต่ก็ไม่มีโชค
มี nginx.conf ของฉัน:
เหตุการณ์{}
http {
แผนที่ $http_upgrade $connection_upgrade {
อัพเกรดเริ่มต้น;
'' ปิด;
}
ข้อมูล error_log /dev/stdout;
log_format json_combined หนี = json
'{'
'"เวลา":"$time_local",'
'"httpRequest":{'
'"requestMethod":"$request_method",'
'"requestUrl":"$scheme://$host$request_uri",'
'"requestSize":$request_length,'
'"สถานะ":"$สถานะ",'
'"responseSize":$bytes_sent,'
'"userAgent":"$http_user_agent",'
'"remoteIp":"$remote_addr",'
'"serverIp":"$server_addr",'
'"ผู้อ้างอิง":"$http_referer",'
'"เวลาแฝง":"${request_time}s",'
'"โปรโตคอล":"$server_protocol"'
'}'
'}';
ตัวแก้ไข 127.0.0.11 ถูกต้อง = 30 วินาที;
รวม /etc/nginx/mime.types;
รวม /etc/nginx/sites-enabled/*.*;
}
proxy.conf:
set_real_ip_ จาก 10.0.0.0/8;
real_ip_header X-ส่งต่อ-สำหรับ;
real_ip_recursive บน;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
proxy_set_header โฮสต์ $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header อัพเกรด $http_upgrade;
proxy_set_header การเชื่อมต่อ $connection_upgrade;
proxy_set_header X-NginX-Proxy จริง;
proxy_cache_bypass $http_upgrade;
proxy_http_version 1.1;
proxy_read_timeout 20d;
ปิด proxy_buffering;
ปิด proxy_request_buffering;
เปิด proxy_intercept_errors;
http2_push_preload บน;
และตำแหน่งของฉัน:
ตำแหน่ง /api/ {
อนุญาต XXX.XX.XX.X;
ปฏิเสธทั้งหมด
รวม /etc/nginx/proxy-options/proxy.conf;
ตั้ง $ocelot บริการ ocelot;
proxy_pass http://$ocelot$uri$is_args$args;
ปิด proxy_ssl_session_reuse;
ปิด proxy_redirect;
client_max_body_size 5M;
}
ฉันจะทำอย่างไรให้ nginx บันทึก IP จริงของผู้ร้องขอ และถ้าเป็นไปได้ ให้ใช้ IP เพื่อเปรียบเทียบกับคำสั่ง allow