amh的Nginx配置中sub_filter指令错误,如何添加或启用相应模块?

amh nginx 模块配置

修改规则时提示错误 nginx: [emerg] unknown directive "sub_filter" in…… 是没编译什么模块么?我换了nginx-generic-1.24和nginx1.26都不行。

location /lbs/
{
    # 跨域配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    tcp_nodelay     on;
    proxy_set_header X-Forwarded-Scheme  $scheme;

    proxy_pass http://127.0.0.1:37781/;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Expect $http_expect;
    proxy_connect_timeout 10d;
    proxy_send_timeout 10d;
    proxy_read_timeout 10d;
    proxy_redirect / /lbs/;
    # 子请求重写路径
    sub_filter 'href="/' 'href="/lbs/';
    sub_filter 'src="/' 'src="/lbs/';
    sub_filter_once off;
    sub_filter_types *;
}

该如何补上这个模块?我手动修改了下 /root/amh/modules/nginx-1.26/AMHScript #install部分代码改成了,然后重启amh也没好使

./configure --prefix=${ModuleInstallPath} --user=www --group=www --with-http_ssl_module --with-cc-opt="-I/home/usrdata/${ModuleName}/openssl-3.1.5-quic/include" --with-ld-opt="-L/home/usrdata/${ModuleName}/openssl-3.1.5-quic/lib64" --with-http_gzip_static_module --with-http_v2_module --with-http_v3_module --with-threads --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_sub_module ;

能否提供下具体如何给nginx添加这个模块的教程?
我按照这个步骤操作了一遍也不行
1、编辑/root/amh/modules/nginx-1.26/AMHScript
2、修改nginx软件的安装脚本,在configure 增加一项
--with-http_sub_module
3、再安装nginx。amh nginx-1.26 install

阅读 1.3k
avatarAI BotBETA

要添加 ngx_http_sub_module 到 Nginx,你需要在编译 Nginx 时包含该模块。以下是一个基本的教程,说明如何为 Nginx 添加 ngx_http_sub_module 模块:

步骤 1: 获取 Nginx 源代码

如果你还没有 Nginx 的源代码,你需要从官方网站下载它,或者使用包管理器来获取。

步骤 2: 配置和编译 Nginx

在编译 Nginx 之前,你需要配置它,以便包含 ngx_http_sub_module。这通常是通过运行 ./configure 脚本并传递适当的选项来完成的。

在你的情况下,你已经编辑了 AMHScript 文件,并添加了 --with-http_sub_module 选项。确保这个选项没有被注释掉或误删除。

步骤 3: 重新编译和安装 Nginx

完成配置后,你可以编译和安装 Nginx。这通常涉及运行 makemake install 命令。

由于你使用的是 AMH,你需要使用 AMH 提供的脚本来完成这个过程。这通常意味着运行类似于 amh nginx-1.26 install 的命令。

注意事项:

  • 确保你的 AMH 环境允许你修改和重新编译 Nginx。有些系统可能不允许这样做,或者可能需要特定的步骤来更新或重新编译模块。
  • 在重新编译之前,最好备份现有的 Nginx 配置和任何重要的数据,以防万一出现问题。
  • 如果 AMH 脚本没有按预期工作,你可能需要手动执行 ./configuremakemake install 步骤。这通常涉及进入 Nginx 源代码目录并直接运行这些命令。

示例命令(手动方式):

# 进入 Nginx 源代码目录
cd /path/to/nginx-source

# 配置 Nginx,包含 sub_module
./configure --prefix=/usr/share/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib64/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --http-log-path=/var/log/nginx/access.log \
            --with-pcre \
            --with-http_ssl_module \
            --with-http_sub_module \
            # ... 其他你需要的选项 ...

# 编译
make

# 安装
sudo make install

请注意,你需要将 --prefix 和其他路径选项替换为你自己的路径,并包括所有你需要的模块和选项。

最后,如果 AMH 脚本没有按预期工作,你可能需要查阅 AMH 的文档或支持论坛,以获取关于如何正确安装和配置 Nginx 的更具体指导。

2 个回答

是的,重新编译的话,要先卸载,amh nginx-1.26 uninstall,
或是可以直接重命名目录,/usr/local/nginx-1.26 为 /usr/local/nginx-1.26.bak/
也相当做备份。

安装后
/usr/local/nginx-1.26/sbin/nginx -V
确认当前已编译的模块。

额,知道怎么解决了,先amh nginx—xxx uninstall 再 amh nginx-xxx install 就会重新按照configure 内增加的 --with-xxxxxxx 编译一份新的。重点是先卸载。。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏