Nginx Restlet如何正确构建HATEAOS链接?
在反向代理/负载平衡器后面构建webapp时,我需要获得请求的正确原始URL(预负载平衡器重写) 我已经使用getReference()(在ServerResource中)添加了HATEAOS意义上的自引用。然而,文档说getReference()可以由路由操作,并且目前它不包括正确的方案(http,而不是https-负载平衡器终止https) 以下是关于转发的头的NGINX配置Nginx Restlet如何正确构建HATEAOS链接?,nginx,reverse-proxy,restlet,hateoas,Nginx,Reverse Proxy,Restlet,Hateoas,在反向代理/负载平衡器后面构建webapp时,我需要获得请求的正确原始URL(预负载平衡器重写) 我已经使用getReference()(在ServerResource中)添加了HATEAOS意义上的自引用。然而,文档说getReference()可以由路由操作,并且目前它不包括正确的方案(http,而不是https-负载平衡器终止https) 以下是关于转发的头的NGINX配置 location /api { proxy_pass http://test-service;
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()方法。是否有一些文档解释了“原始”引用是如何构造的,反向代理后面使用了哪些字段。由于潜在的安全问题,我认为必须在Restlet中明确启用对
X-Forwarded-For
头的支持
以下是将此功能作为服务器连接器级别启用的方法:
Component c = new Component();
Server server = c.getServers().add(Protocol.HTTP, 8182);
server.getContext().getParameters().add("useForwardedForHeader", "true");
c.start();
有关详细信息,请参阅此页:
完成后,相应的提示将在ClientInfo对象中提供:
List<String> forwardedAddresses
= request.getClientInfo().getForwardedAddresses();
列出转发的地址
=request.getClientInfo().getForwardedAddresses();
有关标头和Restlet API之间的映射,请参见此页面:
希望这对你有帮助,
蒂埃里