Restlet 如何正确建立关联 HATEAOS 链接?
Restlet how to build relates HATEAOS links properly?
在反向 proxy/load 平衡器后面构建一个 webapp,我需要获得请求的正确原始 URL(预负载平衡器重写)。
我已经使用 getReference()(在 ServerResource 中)添加了 HATEAOS 意义上的自引用。但是文档说 getReference() 可以由路由操作,目前它不包括正确的方案(http,而不是 https - 负载均衡器终止 https)。
这是关于 headers 转发的 NGINX 配置。
location /api {
proxy_pass http://test-service;
proxy_pass_header X-Host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X_FORWARDED_PROTO $scheme;
}
是反向代理配置不正确,还是应该使用getOriginalReference()方法。是否有一些文档解释了 "original" 引用是如何构造的,哪些字段在反向代理后面使用。
我认为由于潜在的安全问题,必须在 Restlet 中明确启用 X-Forwarded-For
header 的支持。
以下是在服务器连接器级别启用此功能的方法:
Component c = new Component();
Server server = c.getServers().add(Protocol.HTTP, 8182);
server.getContext().getParameters().add("useForwardedForHeader", "true");
c.start();
有关详细信息,请参阅此页面:http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/base/connectors。
完成后,相应的提示在 ClientInfo 中可用 object:
List<String> forwardedAddresses
= request.getClientInfo().getForwardedAddresses();
请参阅此页面了解 headers 和 Restlet API 之间的映射:http://restlet.com/technical-resources/restlet-framework/guide/2.2/core/http-headers-mapping。
希望这对你有帮助,
蒂埃里
在反向 proxy/load 平衡器后面构建一个 webapp,我需要获得请求的正确原始 URL(预负载平衡器重写)。
我已经使用 getReference()(在 ServerResource 中)添加了 HATEAOS 意义上的自引用。但是文档说 getReference() 可以由路由操作,目前它不包括正确的方案(http,而不是 https - 负载均衡器终止 https)。
这是关于 headers 转发的 NGINX 配置。
location /api {
proxy_pass http://test-service;
proxy_pass_header X-Host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X_FORWARDED_PROTO $scheme;
}
是反向代理配置不正确,还是应该使用getOriginalReference()方法。是否有一些文档解释了 "original" 引用是如何构造的,哪些字段在反向代理后面使用。
我认为由于潜在的安全问题,必须在 Restlet 中明确启用 X-Forwarded-For
header 的支持。
以下是在服务器连接器级别启用此功能的方法:
Component c = new Component();
Server server = c.getServers().add(Protocol.HTTP, 8182);
server.getContext().getParameters().add("useForwardedForHeader", "true");
c.start();
有关详细信息,请参阅此页面:http://restlet.com/technical-resources/restlet-framework/guide/2.3/core/base/connectors。
完成后,相应的提示在 ClientInfo 中可用 object:
List<String> forwardedAddresses
= request.getClientInfo().getForwardedAddresses();
请参阅此页面了解 headers 和 Restlet API 之间的映射:http://restlet.com/technical-resources/restlet-framework/guide/2.2/core/http-headers-mapping。
希望这对你有帮助, 蒂埃里