如何在Azure Web App中强制HTTPS跳转?已配置自定义域名SSL cert
Azure Web App 强制HTTP跳转HTTPS的解决方案
首先明确:Azure Web App属于Azure App Service的子集,「TLS/SSL设置」面板是存在的,只是入口可能和你看到的文档描述有细微差异,先尝试找对入口:
- 登录Azure门户,进入你的Web App资源
- 在左侧导航栏的「设置」分类下,找到「TLS/SSL设置」(如果没看到,直接用顶部搜索框搜「TLS/SSL设置」)
- 切换到「HTTPS 仅」选项卡,将开关设为「开启」,即可自动实现HTTP到HTTPS的重定向。
如果确实无法找到该面板,还有以下非代码方案可选:
方案一:通过应用设置配置
- 进入Web App的「配置」→「应用设置」
- 添加一个名为
HTTPS_ONLY的应用设置,值设为On - 保存配置后,Web App会自动启用HTTP到HTTPS的强制跳转。
方案二:自定义重写规则
Windows环境(IIS)
在站点根目录创建或修改 web.config 文件,加入以下重写规则:
<configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS Redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
Linux环境(Apache)
在站点根目录的 .htaccess 文件中添加:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
代码层面的备选方案(Flask)
如果以上非代码方案都无法生效,再考虑通过Flask代码实现,示例如下:
from flask import Flask, request, redirect from werkzeug.middleware.proxy_fix import ProxyFix app = Flask(__name__) # 适配Azure反向代理,让Flask识别真实请求协议 app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1) @app.before_request def enforce_https(): if not request.is_secure: secure_url = request.url.replace('http://', 'https://', 1) return redirect(secure_url, code=301) # 你的业务路由 @app.route('/') def index(): return "已强制跳转至HTTPS" if __name__ == '__main__': app.run()
内容的提问来源于stack exchange,提问作者Robert Sim
相关产品推荐
相关产品推荐

