ฉันมี Load Balancer ที่ให้บริการโดย Digital Ocean ซึ่งมี IPv4 สาธารณะ ซึ่งผู้ใช้ทุกคนสามารถเข้าถึงได้ผ่าน HTTP และ HTTPs (ไม่มีวิธีบล็อกที่ต้นทาง)
เพื่อป้องกันไม่ให้ผู้ใช้และสคริปต์เข้าถึงเซิร์ฟเวอร์โดยตรงผ่าน IP ฉันได้เพิ่มกฎใน VirtualHost บนเซิร์ฟเวอร์ Apache (VPS)
ในการทดสอบของฉัน ผลตอบแทนจะเป็น 403 เสมอ ซึ่งในทางทฤษฎีแล้ว บล็อกการเข้าถึง IP นั้นใช้งานได้
แต่ฉันสังเกตว่ามีการเข้าถึงที่มาพร้อมกับ IP ส่วนตัวของโหลดบาลานเซอร์ (LAN ของ VPS) ที่ส่งคืนรหัส HTTP 200 นั่นคือบุคคล/สคริปต์สามารถเชื่อมต่อได้สำเร็จ (Public-IPv4-Load-Balancer > Local Network > VPS ของฉัน).
ด้านล่างนี้คือข้อจำกัดใน VirtualHost 000-default.conf ทั้ง HTTP และ HTTPS (การตั้งค่านี้จะเหมือนกันทั้งบนเซิร์ฟเวอร์ Apache (VPS))
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
LogLevel notice core:info
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog syslog:local1
Header append X-FRAME-OPTIONS "SAMEORIGIN"
</VirtualHost>
<VirtualHost *:80>
ServerName VPS-PUBLIC-IP
Redirect 403 /
ErrorDocument 403 "The operation had an error."
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
ServerName LOAD-BALANCER-PUBLIC-IPV4
Redirect 403 /
ErrorDocument 403 "The operation had an error."
DocumentRoot /var/www/html
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName LOAD-BALANCER-PUBLIC-IPV4
Redirect 403 /
ErrorDocument 403 "The operation had an error."
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
นี่คือบันทึกการเข้าถึงสำเร็จ
ส่วนตัว-IP-โหลด-บาลานเซอร์ - - [15/มิ.ย./2021:11:20:10 -0300] "GET / HTTP/1.0" 200 1223 "-" "https://example.com:Company-Censured Analyze ให้ "
มีการตั้งค่าใด ๆ บนเซิร์ฟเวอร์ของฉันที่ไม่ถูกต้องหรือไม่?