2016-05-13 66 views
3

我想在https上運行Grails,並在localhost上運行。我已經配置了HTTPS,並且當localhost:443被擊中時可以看到Apache頁面。目前Grails運行於8080。當我嘗試使用grails -Dserver.port.https=443 run-app -https運行Grails時,我得到了Permission denied。我知道這需要某種根訪問端口1024以下。但是當我嘗試sudo grails run-app時,這給我命令找不到。在HTTPS上運行Grails

任何可能的解決方案?

+0

哪個版本的Grails是你的? – droggo

+0

Grails版本是2.3.11 –

+0

根據文檔http://docs.grails.org/2.3.11/guide/single.html#understandingControllersAndActions你應該使用'grails.server.port.https' - 你缺少'grails 。'在選項 – droggo

回答

1

通常,以root身份運行您的web應用程序是一個壞主意。實際上,您的應用程序變得超級可利用。安裝程序中的任何安全漏洞都會突然給攻擊者提供對服務器的完全root權限。

這就是爲什麼它是更常見的是執行下列操作之一:

  • 運行沒有HTTPS,如Apache或nginx的或在端口443上使用HTTPS HAProxy的,並在8080端口上的Grails的代理。設置代理將所有請求轉發到8080的grails應用程序。確保grails應用程序僅偵聽本地主機,因此您無法直接訪問yoursite.com:8080。
  • 在8080運行的Grails,以https,只監聽本地主機,併成立了網絡過濾器/ iptables規則將有關443流量爲localhost 8080

兩個設置是essentialy相同。主要區別在於是使用用戶級別設置還是依賴於操作系統級別的服務(如netfilters)。

+0

的開頭,你在相當程度上解決了我的困惑。我會告訴你更具體的。基本上,我有一個從grails視圖發出的銀行交易請求。該請求僅需要https。所以上述情況對於傳入來說是正確的我什麼時候發佈?如何通過443重定向傳出? –

+0

定義「外向」...如果您使用HttpBuilder或某些連接外部URL的方式,只需確保URL以「https」開頭。 – billjamesdev