ฉันได้รับข้อผิดพลาดส่วนหัวของโฮสต์ไม่ถูกต้องจากเซิร์ฟเวอร์ของฉัน และฉันไม่แน่ใจว่าจะแก้ไขอย่างไร
URL คำขอข้อผิดพลาดคือ https://127.0.0.1:8000 และข้อเสนอแนะที่ชัดเจนคือการเพิ่ม localhost ให้กับโฮสต์ที่อนุญาต (โดยใช้ django) ของฉัน อย่างไรก็ตาม ฉันได้อ่านแล้วว่าการรักษา localhost ไว้ในโฮสต์ที่อนุญาตในการผลิตนั้นเป็นแนวปฏิบัติที่ไม่ดีและอาจเป็นข้อบกพร่องด้านความปลอดภัย ในขณะนี้ โฮสต์ที่อนุญาตใน prod ถูกจำกัดไว้ที่โดเมนที่ลงทะเบียนของฉัน
ฉันขุดเสร็จแล้วดูเหมือนว่าคำขอเหล่านี้มาจากเครื่องสแกนพอร์ต IP ในรายงานอีเมล บางครั้งฉันเห็นลิงก์ GitHub ใน HTTP_USER_AGENT ไปยังที่เก็บสแกนเนอร์ดังกล่าว และ HTTP_X_FORWARDED_FOR มักจะเป็นผู้ให้บริการ VPN บางรายหรืออยู่ในมอสโกวหรือปักกิ่ง
นี่คือการกำหนดค่า nginx ปัจจุบันของฉัน ฉันได้นำคำแนะนำเล็กน้อยจากโพสต์อื่น ๆ เช่น custom if regex filtering แต่ดูเหมือนจะไม่มีผล
นอกเหนือจากปัญหานี้ ดูเหมือนว่าทุกอย่างจะทำงานตามที่ตั้งใจไว้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. เป็นครั้งแรกที่ตั้งค่าอะไรแบบนี้ ดังนั้นโปรดชี้ให้เห็นข้อผิดพลาดที่ชัดเจน
# ไฟล์: /etc/nginx/sites-available/app
ปิด server_tokens;
access_log /var/log/nginx/app.access.log;
error_log /var/log/nginx/app.error.log;
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
กลับ 444;
}
เซิร์ฟเวอร์ {
server_name app.example.com;
ฟัง 80;
ส่งคืน 301 https://$host$request_uri;
}
เซิร์ฟเวอร์ {
# กำหนด regex if คำสั่งเป็น 444 ส่วนหัวของโฮสต์ที่ไม่คาดคิด
ถ้า ( $host !~* ^(app.example.com|example.com)$ ) {
กลับ 444;
}
ตำแหน่ง / คงที่ {
เปิดดัชนีอัตโนมัติ;
นามแฝง /path/to/django/staticfiles;
}
# ส่งคำขอให้ guinicorn ฟังบน http://localhost:8000
ที่ตั้ง / {
proxy_pass http://localhost:8000;
รวม /etc/nginx/proxy_params;
ปิด proxy_redirect;
}
ฟัง 443 ssl;
server_name app.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers รหัส;
}