当前有 3 个应用程序在各自的端口(5000、30000 和
32000)上运行。所有这些应用程序都在各自的端口上运行。现在我想在 haproxy 的帮助下使用别名映射这 3 个应用程序。
我已尝试过
frontend frontend1
mode http
bind *:8080
bind *:443 ssl crt /etc/ssl/private/mydomain.pem
http-request redirect scheme https code 301 if !{ ssl_fc }
acl path-processdesigner path_beg -i /
use_backend backend3 if path-processdesigner
acl path-processdesigner path_beg -i /processdesigner
use_backend backend3 if path-processdesigner
frontend frontend2
mode http
bind *:8000
bind *:443 ssl crt /etc/ssl/private/mydomain.pem
http-request redirect scheme https code 301 if !{ ssl_fc }
acl path-processcore path_beg -i /
use_backend backend2 if path-processcore
acl path-processcore path_beg -i /processcore
use_backend backend2 if path-processcore
frontend frontend3
mode http
bind *:80
acl path-employeeList path_beg -i /index
use_backend backend1 if path-employeeList
backend backend1
mode http
option httplog
option forwardfor
reqrep ^([^\ :]+)\ /index/?(.*)$ \1\ /\2
server backend1 206.189.22.155:32000
backend backend2
mode http
option httplog
option forwardfor
reqrep ^([^\ :]+)\ /processcore/?(.*)$ \1\ /\2
server backend2 206.189.22.155:5000
backend backend3
mode http
option httplog
option forwardfor
reqrep ^([^\ :]+)\ /processdesigner/?(.*)$ \1\ /\2
server backend2 206.189.22.155:30000
使用此配置我可以访问https://206.189.22.155/processdesigner和http://206.189.22.155/index但是当我打https://206.189.22.155/processcore我得到 404 not found。现在,如果我从配置中完全删除前端 frontend1,那么https://206.189.22.155/processcore可以工作并显示输出。为什么只有当我完全删除 frontend1 时它才可以工作?我该如何修复这个问题?请帮忙
注意:所有应用程序都在各自的端口上运行,即http://206.189.22.155:5000/,http://206.189.22.155:32000/和http://206.189.22.155:30000/。
答案1
您有两个前端在同一个端口 443 上监听,但只有第一个前端会匹配端口 443 上的所有请求。