如何仅在开发模式下在HTTPS中运行Play框架?

时间:2015-09-09 13:12:36

标签: java https playframework playframework-1.x

我想在开发模式下通过HTTPS 运行Play Framework,我使用以下配置来完成:

https.port=9443
trustmanager.algorithm=JKS
keystore.file=conf/certificate.jks
keystore.password=password
certificate.password=password
application.mode=dev
%prodenv.application.mode=prod

这在我运行play run时有效但在生产中我们运行play run --%prodenv并且我想禁用HTTPS,因为HTTPS由Nginx处理。我迷失了如何做到这一点。我想通过配置文件而不是通过其他命令行参数来执行此操作,因为它无法将所有应用程序配置都放在application.conf文件中。

7 个答案:

答案 0 :(得分:7)

一种方法是使用两个confs文件:application.confprod.conf

application.conf保持原样,prod.conf看起来像

include "application.conf"
https.port = myProdPort

### other params to be overwritten

在prod中启动应用程序时,您可以执行

play run -Dconfig.file=/mypath/prod.conf

答案 1 :(得分:2)

sbt run -Dhttps.port=9443 -Dhttp.port=disabled

答案 2 :(得分:1)

与Johan的其他答案类似,我采用相反的方式:我的application.conf用于生产,我只是在开发中运行dev.conf

include "application.conf"
https.port = devPort

在本地运行:

play run -Dconfig.file=dev.conf

这样您就不必更改prod服务器上的任何配置。

答案 3 :(得分:0)

您可以从conf文件中删除https.port param,并在开发模式下运行时通过命令行传递它:

play run -Dhttp.port=9443

请参阅:Sprecifying server address and port

答案 4 :(得分:0)

我没有使用两个配置文件,只使用了一个。为了运行应用程序,我运行play run --%dev,这就是配置的样子。

%dev.https.port=9443
%dev.trustmanager.algorithm=JKS
%dev.keystore.file=conf/certificate.jks
%dev.keystore.password=password
%dev.certificate.password=password

答案 5 :(得分:0)

Play框架使用Netty服务器运行,您可以使用-D参数覆盖服务器配置。

sbt中可以这样做:

sbt "project pepe-grillo-server" "run -Dhttps.port=42443 -Dhttp.port=disabled"

答案 6 :(得分:0)

如果您使用的是自定义ssl引擎提供程序CustomSSLEngineProvider,则可以使用以下命令以ssl模式运行netty。

./sbt "-Dhttps.port=9443" "-Dplay.server.https.engineProvider=services.https.CustomSSLEngineProvider" "-Dconfig.resource=<config file> run

服务器启动并运行后,您可以卷曲端点以检查证书有效性。

curl -v https://127.0.0.1:9443