窒素メーリングリストでの私の回答は、マークダウンのようなフォーマットのためにここに複製されています。
私はこれを2つの方法のいずれかで行います。どちらも、Nginxのようなリバースプロキシの背後に窒素を配置することを意味します。
最初の方法は、特定のページにSSLを強制する単純な書き換えルールをnginxに設定することです。たとえば、nginxで、/ adminで始まるすべてのリクエストをHTTPS経由にリダイレクトする場合は、HTTPセクションでこれを行うことができます。
location ^~ /admin {
rewrite ^ https://$http_host$request_uri? permanent;
}
SSLを介して実行するためのnginxの構成については、https ://github.com/nitrogen/nitrogen_core/blob/master/doc/org-mode/config.orgで読むことができます。
次の選択肢は、(もう一度)リバースプロキシの背後に窒素を配置することですが、今回は、リクエストが安全であることを示すヘッダーの存在を確認します(このヘッダーはnginxによって挿入されます)。
たとえば、nginx構成の「ssl」セクションに次のようなヘッダーを設定するルールを追加できます。
proxy_set_header X-Forwarded-SSL on;
次に、wf:header(x_forwarded_ssl)を使用してヘッダーの存在を確認できます。
リバースプロキシを使用していない場合、最も簡単なチェックは、リクエストを取得してサイトが提供されているポートをチェックし、次にソケットポートをチェックすることです。
Req = wf_context:request_bridge(),
Port = Req:peer_port().
次に、ポートが80の場合はhttp、443の場合はhttpsであるかどうかを確認します。
個人的には、nginxソリューションを選択します。これは、どの程度のスケーリングでも、サーバーを追加してnginxに負荷分散とSSL処理を行わせることで、単純にスケールアウトできると便利だからです。