UWSGI 在 Heroku 上实现 hsts
UWSGI implement hsts on Heroku
我已经按照 uwsgi 的一个片段尝试启用 hsts。这是我当前的配置:
[uwsgi]
http-socket = :$(PORT)
master = true
processes = 4
die-on-term = true
module = webapp:app
memory-report = true
check-static = %v/webapp/static/
route= ^/?$ static:%v/webapp/static/pages/index.html
route-host = ^localhost:(?:[0-9]+)$ last:
route-if-not = equal:${HTTPS};on redirect-permanent:https://${HTTP_HOST}${REQUEST_URI}
route-if = equal:${HTTPS};on addheader:Strict-Transport-Security: max-age=31536000
route = .* last:
我想做的是对除 localhost 之外的任何内容强制执行 hsts。该站点在 localhost 上运行,但在 heroku 上,对主页的请求根本不会被重定向,对静态资产的请求会进入无限循环,甚至 https 请求也会被重定向。
编辑
问题是 Heroku 的负载平衡器没有安全地连接到 dyno。有没有一种方法可以基于 X-Forwarded-Proto
header 或基于包含协议的完整请求 url 进行路由(这样我就可以将其匹配到 ^https:
)?
这对我有用:
route-if = equal:${HTTP_X_FORWARDED_PROTO};http redirect-permanent:https://${HTTP_HOST}${REQUEST_URI}
我已经按照 uwsgi 的一个片段尝试启用 hsts。这是我当前的配置:
[uwsgi]
http-socket = :$(PORT)
master = true
processes = 4
die-on-term = true
module = webapp:app
memory-report = true
check-static = %v/webapp/static/
route= ^/?$ static:%v/webapp/static/pages/index.html
route-host = ^localhost:(?:[0-9]+)$ last:
route-if-not = equal:${HTTPS};on redirect-permanent:https://${HTTP_HOST}${REQUEST_URI}
route-if = equal:${HTTPS};on addheader:Strict-Transport-Security: max-age=31536000
route = .* last:
我想做的是对除 localhost 之外的任何内容强制执行 hsts。该站点在 localhost 上运行,但在 heroku 上,对主页的请求根本不会被重定向,对静态资产的请求会进入无限循环,甚至 https 请求也会被重定向。
编辑
问题是 Heroku 的负载平衡器没有安全地连接到 dyno。有没有一种方法可以基于 X-Forwarded-Proto
header 或基于包含协议的完整请求 url 进行路由(这样我就可以将其匹配到 ^https:
)?
这对我有用:
route-if = equal:${HTTP_X_FORWARDED_PROTO};http redirect-permanent:https://${HTTP_HOST}${REQUEST_URI}