如何在python中生成Nginx安全链接

如何使用python在Nginx中建立安全链接模块的链接?
我正在寻找使用Nginx来提供具有过期链接的安全文件的方法.
Link to Nginx Wiki
最佳答案
接受的答案是错误的,因为它仅散列密码,而不散列密码,URL和有效时间的组合.

import base64
import hashlib
import calendar
import datetime

secret = "itsaSSEEECRET"
url = "/secure/email-from-your-mom.txt"

future = datetime.datetime.utcnow() + datetime.timedelta(minutes=5)
expiry = calendar.timegm(future.timetuple())

secure_link = "{key}{url}{expiry}".format(key=secret,
                                          url=url,
                                          expiry=expiry)
hash = hashlib.md5(secure_link).digest()
encoded_hash = base64.urlsafe_b64encode(hash).rstrip('=')

print url + "?st=" + encoded_hash + "&e=" + str(expiry)

nginx.conf的对应部分

location /secure {

    # set connection secure link
    secure_link $arg_st,$arg_e;
    secure_link_md5 "itsaSSEEECRET$uri$secure_link_expires";

    # bad hash
    if ($secure_link = "") {
        return 403;
    }

    # link expired
    if ($secure_link = "0") {
        return 410;
    }

    # do something useful here
}

转载注明原文:如何在python中生成Nginx安全链接 - 代码日志