我正在考虑将我们的应用程序迁移到 Amazon Web Services。计划是让所有 EC2 实例跨两个可用区进行镜像。由于数据传输成本,我们将留在一个 AWS 区域(俄勒冈)。
多个可用区消除了我们的应用程序和数据库服务器的单点故障,但是 ELB 呢?如果我有一个 ELB 在两个 AZ 之间分配流量,ELB 是否也托管在这两个 AZ 上?
亚马逊如何防止 ELB 成为 SPoF?
当 Nginx 收到缺少 Host 标头的请求时,它会拒绝该请求并返回 400 响应。正如它应该。
有没有办法解决?
有一个硬件需要能够对我的 Nginx Web 服务器进行 REST 调用,但该设备未发送主机标头。我对此无能为力,我无法控制该设备的内部运作。
这将是唯一一个与我的 Web 服务器通信且缺少主机标头的设备,并且它将始终连接到同一位置。服务器使用基于名称的虚拟主机。
我尝试使用headers-more-nginx模块重建我的服务器,因为我相信它可以在处理请求之前向请求添加标头。我将以下行添加到该虚拟主机的 server{} 块中:
more_set_input_headers "Host: device.myserver.com";
Run Code Online (Sandbox Code Playgroud)
但请求仍然被 400 拒绝。
编辑:
我忘了提及这些设备目前能够向 lighttpd 1.4.28 Web 服务器发出请求。我正在尝试让他们在 Nginx 上工作。我在 lighttpd 配置文件中找不到任何应该允许它工作的特殊内容,似乎 lighttpd 不需要这个标头。
编辑2:
tcpdump 的结果(我删除了不应该放在网上的内容):
POST http://XXX.XXX.XXX.com/index/get-next-command HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Content-Length: 62
user=XXX&pass=XXX&v=0103HTTP/1.1 200 OK
X-Powered-By: PHP/5.3.10-1ubuntu3.21
Set-Cookie: PHPSESSID=XXX; path=/
Set-Cookie: username=XXX; path=/
Set-Cookie: password=XXX; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: …Run Code Online (Sandbox Code Playgroud)