目前我们在端口9000上运行我们的Play应用程序,Apache作为前端HTTP服务器,如下所示:
<VirtualHost *:80>
ServerName vms.gltd.net
ProxyPass /http-bind http://vms.gltd.net:5280/http-bind/
ProxyPassReverse /http-bind http://vms.gltd.net:5280/http-bind/
ProxyPass / http://vms.gltd.net:9000/
ProxyPassReverse / http://vms.gltd.net:9000/
</VirtualHost>
然而,当用户注册时,Play Authenticate使用play.mvc.Http.Request中的端口,该端口为9000而不是80.
有没有办法覆盖Play Authenticate使用的端口,还是我们必须将Play应用移动到自己的服务器并在端口80上运行?
感谢,
-Leon
答案 0 :(得分:0)
高级代理设置
使用HTTP正面服务器时,请求 地址被视为来自HTTP服务器。在通常的设置中, 你们都有Play应用程序和代理运行的地方 机器,Play应用程序将看到来自127.0.0.1的请求。
代理服务器可以向请求添加特定标头以告知 请求来自的代理应用程序。大多数Web服务器都会 添加一个X-Forwarded-For标头,其远程客户端IP地址为 第一个论点。如果代理服务器在localhost上运行 从127.0.0.1连接,Play将信任其
X-Forwarded-For
标头。 如果您在其他计算机上运行反向代理,则可以进行设置 应用程序中的trustxforwarded
配置项为true 配置文件,如下:trustxforwarded=true
但是,主机标头不受影响,它仍将由代理发出。如果使用Apache 2.x,则可以添加如下指令:
ProxyPreserveHost on
host:
标头将是原始主机 请求标头由客户端发出。通过结合论文二 技术,您的应用程序似乎将直接暴露。如果您不希望此播放应用占据整个根目录,请添加 代理配置的排除指令:
ProxyPass /excluded !