Kafka brokers 本身并不直接支持跨域访问,因为它们是基于 TCP/IP 协议的。然而,你可以通过配置 Kafka 代理(如 Apache Nginx 或者 Apache HAProxy)来实现跨域访问。
以下是一些建议的步骤:
http
块中添加以下内容:location /kafka {
proxy_pass http://your_kafka_broker;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
if ($request_method = 'OPTIONS') {
add_header Access-Control-Max-Age 1728000;
add_header Content-Type 'text/plain; charset=utf-8';
add_header Content-Length 0;
return 204;
}
}
对于 HAProxy,你可以在 frontend
配置块中添加以下内容:
frontend kafka_front
bind *:9092
default_backend kafka_back
backend kafka_back
balance roundrobin
server kafka1 your_kafka_broker1:9092
server kafka2 your_kafka_broker2:9092
请注意,这种方法允许你的应用程序跨域访问 Kafka brokers,但并不意味着 Kafka brokers 之间可以相互通信。如果你需要在 Kafka brokers 之间实现跨域通信,你需要在每个 broker 上重复上述步骤。