You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为搭载Node.js、React的Linux Azure Web App启用gzip压缩

Azure Linux部署槽nginx gzip配置持久化解决方案

该需求完全可实现,无需修改容器内默认的临时nginx.conf文件,以下是2种官方支持的持久化方案:

方案一:使用自定义启动脚本(推荐,适用于所有内置运行栈)

  • 第一步:在应用代码根目录新建自定义gzip配置文件gzip.conf,写入所需配置,示例如下:
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json;
  • 第二步:同目录新建启动脚本startup.sh,内容参考(需要根据你的应用运行栈调整最后一行的应用启动命令):
#!/bin/bash
# 将自定义配置复制到nginx自动加载目录
cp /home/site/wwwroot/gzip.conf /etc/nginx/conf.d/
# 重载nginx配置使其生效
nginx -s reload
# 替换为你的应用原有启动命令,以下为不同运行栈示例:
# Node.js: pm2 start /home/site/wwwroot/server.js
# Python: gunicorn --bind=0.0.0.0 --timeout 600 application:app
# PHP: 不需要额外启动命令,php-fpm会默认启动
  • 第三步:本地给startup.sh添加执行权限,执行chmod +x startup.sh,之后将两个文件和应用代码一起打包部署到部署槽
  • 第四步:进入Azure门户对应部署槽的「配置」-「常规设置」页,在「启动命令」输入框填入:
    /home/site/wwwroot/startup.sh
    保存后重启部署槽即可生效,配置会持久保存在Azure为应用挂载的/home持久化存储中,重启不会丢失。

方案二:使用自定义容器镜像(适用于容器部署场景)

如果你当前使用自定义容器部署应用,直接在Dockerfile中完成nginx配置修改即可:

  • 将自定义gzip配置或者修改完成的完整nginx.conf在镜像构建阶段复制到容器内对应路径
  • 构建完成的镜像推送到容器镜像仓库后,配置部署槽拉取该镜像启动即可,配置直接固化在镜像中,重启不会丢失。

补充说明:早年的相关讨论提到无法实现是因为当时Azure Linux App Service还未开放自定义启动脚本能力,目前该能力已经完全开放。nginx默认主配置会自动加载/etc/nginx/conf.d/目录下所有.conf后缀的配置,优先级高于主配置中的注释项,无需修改默认主配置即可覆盖gzip规则。

内容的提问来源于stack exchange,提问作者kpollock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:18:02