在 apache 前面使用 SSL 的 haproxy 进行本地开发

在 apache 前面使用 SSL 的 haproxy 进行本地开发

我开发了一个 Web 应用,该应用定期向 REST 服务器发出 AJAX 调用,该服务器(在生产中)通过同一域访问。在本地开发时,我一直使用 haproxy 将 REST 调用重定向到开发服务器,以绕过浏览器跨源请求限制。

haproxy配置文件

global
 maxconn 4096
 pidfile ~/tmp/haproxy.pid

defaults
 log global
 log 127.0.0.1 local0
 log 127.0.0.1 local1 notice  
 mode http
 timeout connect 300000
 timeout client 300000
 timeout server 300000
 maxconn 2000
 option redispatch
 retries 3
 option httpclose
 option httplog
 option forwardfor
 option httpchk HEAD / HTTP/1.0


frontend dev
   bind *:8080 ssl crt /path/to/proxy.pem

    acl                             allow_php               path_beg /app/
    acl                             allow_rest              path_beg /rest/

    use_backend                     be_php                  if allow_php
    use_backend                     be_rest                 if allow_rest

backend be_php
 balance roundrobin
 server localhost_80 localhost:80

backend be_rest
 balance roundrobin
 server dev_80 dev.example.com:80

这按预期工作:

  • https://localhost:8080/app/login显示内容与http://localhost/app/login
  • https://localhost:8080/rest/test响应与http://dev.example.com/rest/test

当我尝试在 HAproxy 和后端(需要 SSL)之间配置 haproxy 以使用 SSL 时出现了问题。

根据我读过的所有文档,以下更改应该可以帮助我完成所有设置:

backend be_php
    balance roundrobin
    server localhost_443 localhost:443 ssl verify none

backend be_rest
    balance roundrobin
    server dev_443 dev.example.com:443 ssl verify none

但进行这些更改后,https://localhost:8080请求会超时。php 后端和 REST 后端都可以通过https://localhost/app/...和直接访问https://dev.example.com/rest/...

知道我做错了什么吗?

编辑:已更新以反映@Michael-sqlbot 的评论

相关内容