我正試圖讓force_ssl工作。我的意思是我想重定向某人試圖通過http連接到https與應用程序本身。force_ssl甚至在nginx後面並生成https url
該應用程序是Nginx背後的dockerized發佈版本。實際上Nginx正在服務於SSL,我知道我完全可以依靠Nginx來終止ssl連接,甚至可以處理非https請求的重定向。但我想了解如何使其工作,所以如果有一天我跳過代理,我會知道如何做到這一點。訪問通過https一切運行正常的服務器時
config :my_app, MyApp.Endpoint,
http: [port: "${PORT}"],
url: [host: "${APP_URL}", port: "${APP_PORT}"],
force_ssl: [hsts: true], #I tried different options without success
server: true,
cache_static_manifest: "priv/static/manifest.json",
root: ".",
version: Mix.Project.config[:version]
其實:
我的督促/配置看起來像這樣。但是,當使用http地址時,重定向網址如下所示:https://%24%7Bapp_url%7D/
並且不起作用。
也許發生這種情況是因爲我沒有給出一個證書文件,沒有它就無法完成整個過程?我認爲force_ssl
只是一個基本的重定向,如果請求不是https。
最後我也試圖產生例如HTTPS URL的郵件我有這樣的事情:
<%= password_url(MyApp.Endpoint, :reset_password_from_email, token: @token, email: @email) %>
但自從我的配置似乎並不好,只產生沒有使用https HTTP鏈接。
也許我應該完全分開這個,在Nginx端或100%在應用端使這100%,但不試圖混合它們兩個?
歡迎任何幫助/想法/評論!
編輯:
最後的測試與此:
force_ssl: [rewrite_on: [:x_forwarded_proto], subdomains: true, hsts: true, host: "${APP_URL}"]
結果與壞網址:https://%24%7Bapp_url%7D/
。所以我認爲這是工作,但變種:"${APP_URL}"
沒有轉換爲真正的價值。我正在挖掘這個。