我正在尝试使用WSO2 ESB来使用服务,例如“services / UserIdentityManagementAdminService?wsdl”和wso2中的“wso2 / scim / Users”等scim,(我想在HA中平衡一个IS)一个https地址端点),我有一个代理,我可以使用scim,但当我尝试获取wsdl wso2 esb时,只发送了一个日志:
INFO {org.apache.synapse.mediators.builtin.LogMediator} - 收件人:/ services / PRX_SC_IS_SERVICES / services / UserInformationRecoveryService?wsdl, MessageID:urn:uuid:10516b34-8004-4c70-9d4c-61957e4d9147,Direction:request,Envelope:{org.apache.synapse.mediators.builtin.LogMediator}
我认为问题在于URL在代理名称之后使用服务,因为当我调用另一个URL时我没有问题。
我的代理配置:
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="PRX_SC_IS_SERVICES"
transports="http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property xmlns:ns="http://org.apache.synapse/xsd"
name="Authorization"
expression="fn:concat('Basic ', base64Encode('admin:admin'))"
scope="transport"/>
<send>
<endpoint key="IS_EP_HTTPS"/>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<description/>
答案 0 :(得分:0)
使用WSO2,您无法执行通用代理,也无法在代理名称后使用“服务”一词。 执行此操作的简单方法是安装Nginx并使用它像代理反向一样使用以下内容:
upstream https.is{
server IP_IS01:9446;
server IP_IS02:9446;
}
server {
listen 8443 ssl;
server_name IP_HOST;
ssl_certificate ssl.crt;
ssl_certificate_key ssl.key;
location / {
proxy_pass https://https.is/;
proxy_set_header Host $http_host;
}
}
您可以做的另一件事是将ESB中的上下文服务(axis2.xml和carbon.xml)移到另一个上下文并部署两个重写上下文/服务和/ wso2 / scim的API,因为现在代理服务应该重定向到另一个上下文,例如/ services / UserAdmin到IS wsdl。 API示例:
<resource methods="POST" uri-template="/PRX*">
<inSequence>
<send>
<endpoint>
<address uri="http://HOST_ESB:PORT_ESB/newservicescontext/"></address>
</endpoint>
</send>
</inSequence>
<outSequence>
<send></send>
</outSequence>