簡體   English   中英

如何僅在開發模式下在 HTTPS 中運行 Play 框架?

[英]How can I run Play framework in HTTPS only in the dev mode?

只想在開發模式下通過 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文件中的目的。

一種方法是有兩個 confs 文件: application.confprod.conf

application.conf保持prod.confprod.conf看起來像

include "application.conf"
https.port = myProdPort

### other params to be overwritten

在 prod 中啟動您的應用程序時,您可以執行以下操作

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

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

我沒有使用兩個配置文件,而是通過一個來實現這一點。 為了運行該應用程序,我運行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

與 Johan 的其他答案類似,我采用相反的方式:我的application.conf用於生產,而我只是在開發中運行dev.conf

include "application.conf"
https.port = devPort

並像這樣在本地運行:

play run -Dconfig.file=dev.conf

這樣您就不必更改生產服務器上的任何配置。

當您在開發模式下運行它時,您可以從您的 conf 文件中刪除https.port參數並通過命令行傳遞它:

play run -Dhttp.port=9443

請參閱: 指定服務器地址和端口

Play 框架使用 Netty 服務器運行,您可以使用-D參數覆蓋服務器配置。

sbt它可以這樣做:

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

如果您使用自定義 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM