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

添加HSTS头后Nginx无法启动,删除配置后仍失败该如何解决?

修复过程不会丢失任何WordPress站点数据,站点文件默认存储在/var/www/目录下,文章、用户等业务数据存储在MySQL/MariaDB数据库中,以下操作均不会触碰这两部分内容,可放心执行。

问题原因

从错误日志可以明确核心报错是:"rewrite" directive is not allowed here in /etc/nginx/nginx.conf:109,说明你修改配置时误将rewrite规则放到了不支持该指令的配置块(如events块、http块外层等),rewrite指令仅允许放在server块、location块或if块中。ssl_stapling的警告不影响Nginx启动,仅为SSL证书缺少中间链的提示,可后续再修复。

修复步骤

  1. 先备份现有配置防止误操作:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  1. 查看错误行附近的配置内容,定位错放的rewrite规则:
sed -n '100,120p' /etc/nginx/nginx.conf
  1. 修正配置:
    • 如果该rewrite是你添加HSTS时误写入的无关规则,直接删除该行即可
    • 如果是原本生效的站点规则,将其移动到对应站点的server块或location块中
  2. 测试配置合法性,出现syntax is ok、test is successful即代表配置正确:
nginx -t
  1. 重启Nginx服务即可恢复访问:
systemctl restart nginx

配置完全乱掉的兜底方案

如果你已经无法区分原有配置和误改的内容,可以直接替换为Ubuntu 20.04默认的nginx.conf主配置,原有站点配置全部存放在/etc/nginx/sites-enabled/目录下不会被覆盖:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

替换后重复上述步骤4、步骤5即可启动Nginx。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:24:02