ฉันใหม่มากกับการตั้งค่า nginx แอปพลิเคชัน API ของฉันทำงานในอินสแตนซ์ EC2 ซึ่งสร้างขึ้นโดยอัตโนมัติโดยสภาพแวดล้อม AWS Elastic Beanstalk ของฉัน
แอปพลิเคชันใช้ Nginx และอินสแตนซ์อยู่หลังตัวจัดสรรภาระงาน ELB (คลาสสิก) เส้นทางโดเมน 53 กำหนดเส้นทางการรับส่งข้อมูลไปยัง ELB
ฉันส่งแพ็กเก็ตจากบุรุษไปรษณีย์หรือผู้ส่งแพ็กเก็ตไปยังโดเมนนั้น แต่ไม่สามารถรับการตอบกลับได้
หลังจากตรวจสอบบันทึกข้อผิดพลาด nginx พบว่า IP ไคลเอ็นต์แสดงเป็น 10.0.2.63
แต่ไม่ใช่ที่อยู่ IP ของพีซีของฉัน ที่อยู่ IP จริงของฉัน 149.15x.1xx.2xx
. ฉันคิดว่า 10.0.2.63
คือที่อยู่ IP ของ VPC ด้านล่างนี้คือบันทึกข้อผิดพลาด nginx
ขณะอ่านโปรโตคอล PROXY ลูกค้า: 10.0.2.63 เซิร์ฟเวอร์: 0.0.0.0:80
ตามความเข้าใจของฉัน เนื่องจาก IP ของไคลเอ็นต์คือที่อยู่ IP ของ VPC อินสแตนซ์ EC2 จึงไม่สามารถส่งการตอบกลับไปยังที่อยู่ IP ของไคลเอ็นต์จริงได้ (ที่อยู่ IP ของพีซีของฉัน) ดังนั้น Postmand หรือ Packet Sender จึงได้รับการตอบกลับที่ว่างเปล่า
ฉันเข้าใจถูกต้องหรือไม่? ฉันจะให้อินสแตนซ์ EC2 รับที่อยู่ IP ของไคลเอ็นต์จริงได้อย่างไร ชอบด้านล่าง:
ขณะอ่านโปรโตคอล PROXY ลูกค้า: 149.15x.1xx.2xx เซิร์ฟเวอร์: 0.0.0.0:80
ฉันไม่รู้ว่ามันเป็นปัญหากับการตั้งค่า AWS ELB หรือการตั้งค่า nginx
การกำหนดค่า nginx ในอินสแตนซ์ EC2 ของฉันคือ:
ไฟล์:
/etc/nginx/conf.d/proxy.conf:
เนื้อหา: |
client_max_body_size 500M;
server_names_hash_bucket_size 128;
แบ็กเอนด์ต้นน้ำ {
เซิร์ฟเวอร์ยูนิกซ์:///var/run/puma/my_app.sock;
}
เซิร์ฟเวอร์ {
ฟัง 80 proxy_protocol;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
large_client_header_buffers 8 32k;
set_real_ip_ จาก 10.0.0.0/8;
real_ip_header X-ส่งต่อ-สำหรับ;
ที่ตั้ง / {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $proxy_protocol_addr;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header โฮสต์ $http_host;
proxy_set_header X-NginX-Proxy จริง;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_pass http://แบ็กเอนด์;
ปิด proxy_redirect;
# เปิดใช้งานการสนับสนุน WebSocket
ตำแหน่ง /v1/เคเบิล {
proxy_pass http://แบ็กเอนด์;
proxy_http_version 1.1;
proxy_set_header อัปเกรด "websocket";
การเชื่อมต่อ proxy_set_header "อัปเกรด";
proxy_set_header X-Real-IP $proxy_protocol_addr;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
}
}
}