标签: host-headers

配置 HAProxy 以包含不同后端的主机标头

我正在探索使用 HAProxy 作为在 IIS 上运行的一组 web api 前面的平衡器。

  • node1.myapp.mycompany.com
  • node2.myapp.mycomapny.com

我们目前正在使用主机头来正确解析 IIS 上的正确 Web 应用程序。例如,我们可能在同一服务器/端口上运行 otherapp.mycompany.com,但使用主机头 IIS 知道要提供哪个服务。

我对 HAProxy 的最初尝试给我留下了 404 错误,因为我的请求中没有包含主机标头,因此 IIS 提供绑定到给定 IP 的默认站点,而不是按主机名解析。

修复给我留下了这样的东西:

frontend localnodes
    bind *:80
    mode http
    default_backend nodes

backend nodes
    mode http
    balance roundrobin
    option forwardfor
    reqirep ^Host: Host:\ node1.myapp.mycompany.com
    server web01 node1.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)

这对单个后端很有用,但我对如何根据哪个后端提供请求包含正确的主机头感到头疼:

backend nodes
    mode http
    balance roundrobin
    option forwardfor
    reqirep ^Host: Host:\ node1.myapp.mycompany.com
    server web01 node1.myapp.mycompany.com:80
    server web02 node2.myapp.mycompany.com:80
Run Code Online (Sandbox Code Playgroud)

每当node2使用上述内容时都不起作用,因为它在 IIS 中无法正确解析(在这种情况下,node2 位于不同的服务器上,因此 IP 不同。事实上,如果它们在同一服务器/IP 上运行,我怀疑请求工作“工作”,但它们都将由每个主机标头的 node1 …

iis proxy haproxy host-headers

6
推荐指数
1
解决办法
3万
查看次数

通过 SSL 需要 Host: 标头吗?

即使请求不是 HTTP/1.1,是否也需要通过 SSL 的 Host: 标头?

因此,如果客户端通过 SSL 连接,并发送以下请求:

GET / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)
  1. 由于缺少 Host: 标头,Web 服务器是否应该抛出错误的请求?
  2. Web 服务器是否应该以 HTTP/1.0 200 OK 响应进行响应?
    ( index.html 文件始终存在,因此对/的请求永远不会导致 403/404)

更新:

如果我在 中禁用 SNI openssl s_client,apache 将在没有 Host: 标头的情况下工作。

为什么在 SNI 开启时需要 Host: 标头?

ssl http host-headers

6
推荐指数
2
解决办法
1423
查看次数

如何防范Nginx代理服务器中的“主机头注入漏洞”

请帮助我防止给定的“ Nginx 配置文件”中的“主机头注入漏洞”

 server {
    listen 80 default_server;
    listen [::]:80 default_server;       
    root /var/www/html;        
    index index.html index.htm index.nginx-debian.html;
    server_name _;
            location / {
            proxy_pass http://IP_1/;
            proxy_set_header Host $http_host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
            add_header Cache-Control "no-cache";                
    }
    location /kuphubadmin/ {                
            proxy_pass http://IP_2/;
            proxy_set_header Host $http_host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
            add_header Cache-Control "no-cache";
   }}
Run Code Online (Sandbox Code Playgroud)

注:以上服务器用作代理服务器。

nginx web-hosting proxypass host-headers

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

host-headers ×3

haproxy ×1

http ×1

iis ×1

nginx ×1

proxy ×1

proxypass ×1

ssl ×1

web-hosting ×1