我开发了一个 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 的评论