Restlet如何正确构建关联HATEAOS链接?

时间:2015-10-18 13:34:31

标签: nginx reverse-proxy restlet hateoas

在反向代理/负载均衡器后面构建一个webapp,我需要获取请求的正确原始URL(预加载均衡器重写)。

我使用了getReference()(在ServerResource中)来添加HATEAOS意义上的自引用。但是文档说getReference()可以由路由操纵,目前它不包含正确的方案(http,而不是https - 负载均衡器终止https)。

以下是有关转发标头的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()方法。是否有一些文档可以解释"原始"构造了引用,在反向代理后面使用了哪些字段。

1 个答案:

答案 0 :(得分:1)

我认为由于潜在的安全问题,必须在Restlet中明确启用X-Forwarded-For标头的支持。

以下是将此功能作为服务器连接器级别启用的方法:

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对象中提供了相应的提示:

List<String> forwardedAddresses
   = request.getClientInfo().getForwardedAddresses();

有关标头和Restlet API之间的映射,请参阅此页面:http://restlet.com/technical-resources/restlet-framework/guide/2.2/core/http-headers-mapping

希望这可以帮到你, 亨利