如何 运行 仅在开发模式下使用 HTTPS 播放框架?
How can I run Play framework in HTTPS only in the dev mode?
我想 运行 Play Framework over HTTPS 仅 在开发模式下,我已经使用以下配置完成了此操作:
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
文件中的目的。
您可以从您的 conf 文件中删除 https.port
参数并通过命令行传递它,当您 运行 它处于开发模式时:
play run -Dhttp.port=9443
一种方法是拥有两个 confs 文件:application.conf
和 prod.conf
application.conf
保持原样,prod.conf
看起来像
include "application.conf"
https.port = myProdPort
### other params to be overwritten
在产品中启动您的应用程序时,您可以
play run -Dconfig.file=/mypath/prod.conf
与 Johan 的其他回答类似,我以相反的方式进行:我的 application.conf
用于产品,而我 运行 一个 dev.conf
正在开发中:
include "application.conf"
https.port = devPort
和运行本地像这样:
play run -Dconfig.file=dev.conf
这样您就不必更改生产服务器上的任何配置。
我没有使用两个配置文件,而是只使用了一个。为了 运行 应用程序,我 运行 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
Play 框架使用 Netty 服务器运行,您可以使用 -D
参数覆盖服务器配置。
在 sbt
中可以这样做:
sbt "project pepe-grillo-server" "run -Dhttps.port=42443 -Dhttp.port=disabled"
sbt run -Dhttps.port=9443 -Dhttp.port=disabled
如果您使用的是自定义 ssl 引擎提供程序 CustomSSLEngineProvider
您可以使用以下命令在 ssl 模式下 运行 netty。
./sbt "-Dhttps.port=9443" "-Dplay.server.https.engineProvider=services.https.CustomSSLEngineProvider" "-Dconfig.resource=<config file> run
一旦服务器启动并且 运行ning 您可以卷曲端点以检查证书有效性。
curl -v https://127.0.0.1:9443
我想 运行 Play Framework over HTTPS 仅 在开发模式下,我已经使用以下配置完成了此操作:
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
文件中的目的。
您可以从您的 conf 文件中删除 https.port
参数并通过命令行传递它,当您 运行 它处于开发模式时:
play run -Dhttp.port=9443
一种方法是拥有两个 confs 文件:application.conf
和 prod.conf
application.conf
保持原样,prod.conf
看起来像
include "application.conf"
https.port = myProdPort
### other params to be overwritten
在产品中启动您的应用程序时,您可以
play run -Dconfig.file=/mypath/prod.conf
与 Johan 的其他回答类似,我以相反的方式进行:我的 application.conf
用于产品,而我 运行 一个 dev.conf
正在开发中:
include "application.conf"
https.port = devPort
和运行本地像这样:
play run -Dconfig.file=dev.conf
这样您就不必更改生产服务器上的任何配置。
我没有使用两个配置文件,而是只使用了一个。为了 运行 应用程序,我 运行 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
Play 框架使用 Netty 服务器运行,您可以使用 -D
参数覆盖服务器配置。
在 sbt
中可以这样做:
sbt "project pepe-grillo-server" "run -Dhttps.port=42443 -Dhttp.port=disabled"
sbt run -Dhttps.port=9443 -Dhttp.port=disabled
如果您使用的是自定义 ssl 引擎提供程序 CustomSSLEngineProvider
您可以使用以下命令在 ssl 模式下 运行 netty。
./sbt "-Dhttps.port=9443" "-Dplay.server.https.engineProvider=services.https.CustomSSLEngineProvider" "-Dconfig.resource=<config file> run
一旦服务器启动并且 运行ning 您可以卷曲端点以检查证书有效性。
curl -v https://127.0.0.1:9443