Tôi đứng sau cloudflare dns và tôi đang cố gắng chặn các ip của khách hàng cụ thể gửi spam trang web của tôi, tôi hiểu rằng tôi có thể đạt được điều này bằng cách thêm một ĐặtEnvIf
quy tắc bên trong cấu hình máy chủ ảo của tôi từ chối các yêu cầu khi ip được liệt kê trong danh sách đen nằm trong X-Forwarded-For
tiêu đề, vì vậy tôi đã cố gắng làm điều đó.
Cấu hình virtuaHost bây giờ trông như thế này
<VirtualHost *:80>
ServerName xxx
ServerAlias xxx
ServerAdmin xxx
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLProxyEngine on
SetEnv proxy-initial-not-pooled 1
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:5004/
ProxyPassReverse / http://localhost:5004
LogFormat '"%h" "%l" "%u" "%t" "%r" "%>s" "%b" "%{X-Forwarded-For}i" "%{CF-Connecting-IP}i" ' forwardedFor
CustomLog /var/log/apache2/forwardedFor.log forwardedFor
# part that should block the spam from the ip 185.237.14.42
<Location />
Order Allow,Deny
SetEnvIf X-Forwarded-For ^185\.237\.14\.42 DenyAccess
Allow from all
Deny from env=DenyAccess
</Location>
</VirtualHost>
Tôi cũng đã thử bằng cách nhắm mục tiêu CF-Connecting-IP
tiêu đề thay vì X-Forwarded-For
kể từ khi cloduflare đặt tiêu đề đó để chỉ ra ip máy khách
trong cả hai trường hợp bất cứ khi nào tôi chạy apache2 với phần cấu hình bên trong <Location>
gắn thẻ các yêu cầu từ tất cả các khách hàng bị chặn với 403
trạng thái và bên trong error.log
của apache sau đây được in
[CN 20 tháng 2 13:17:28.494348 2022] [access_compat:error] [pid 65797] [client 162.158.103.169:48030] AH01797: client bị cấu hình server từ chối: proxy:http://localhost:5004/token/
Vậy làm cách nào tôi có thể chỉ chặn thành công các yêu cầu đến từ ip 185.237.14.42
và không phải mọi yêu cầu?