0

Nginx安装 http_fancyindex 和 http_js 模块 | ngx_http_fancyindex | ngx_http_js

Share
Avatar photo
  • 2024 年 11 月 27 日

近期在安装清华TUNA提供的tunasync的网站端,在这个过程中发现由TUNA提供的 mirrors-web 是可以做到和清华镜像源一样的网站的。

但是在这个里面发现这个程序需要用到 ngx_http_fancyindex_module 和 ngx_http_js_module 两个模块,笔者采用的是Ubuntu 22系统,并且发现如果用 Ubuntu 的官方源下载下来的 Nginx 是没有办法安装以上两个模块的。

所以在这里我们采用直接使用Nginx官方源与自编译的方式去实现以上两个 Nginx 模块的安装。

一,Nginx安装

首先以 Ubuntu 为例,用户需要从 Nginx 官方源下载安装软件。

1.安装依赖

sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

2.安装 Nginx 官方 key

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

3. 验证安装

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
执行后输出应该为
pub   rsa4096 2024-05-29 [SC]
      8540A6F18833A80E9C1653A42FD21310B49F6B46
uid                      nginx signing key <signing-key-2@nginx.com>

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

pub   rsa4096 2024-05-29 [SC]
      9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3
uid                      nginx signing key <signing-key-3@nginx.com>

4. 设置 apt 源

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list

5. 配置源

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list

6. 安装 Nginx 与 ngx_http_js_module

sudo apt update
sudo apt install nginx-module-njs-dbg nginx

到此,就已经成功安装了 nginx 和 http_js 模块了。

二,编译 ngx_http_fancyindex_module 

Fancy Index模块可以像内置的autoindex模块一样生成文件列表,但增加了一些风格,该模块允许对生成的内容进行一定程度的定制,Github传送门

首先看一下本地安装的nginx版本

nginx -v

笔者这里是1.27.3版本,得到版本后我们前往 Nginx 官网下载 Nginx 的源码包(传送门

我们找到我们的版本1.27.3并下载解压下来(一定要下载与本地安装版本一致的nginx,否则编译出来的so是不可以跨版本使用的)

wget https://nginx.org/download/nginx-1.27.3.tar.gz
tar xzvf nginx-1.27.0.tar.gz

然后我们需要拉取 fancyindex 的源码

git clone https://github.com/aperezdc/ngx-fancyindex.git

然后我们进入到 Nginx 的目录(注意,这里的参数ngx-fancyindex根据你自己clone下来的的路径去修改

cd nginx-1.27.3
./configure --add-dynamic-module=../ngx-fancyindex --with-compat

根据你的系统配置,你可能需要安装以下的一些系统依赖

sudo apt install -y libpcre3-dev libxslt-dev libgd-dev libgeoip-dev

configure 结束后,开始编译 modules

make modules

执行完毕后,会在 objs 文件夹下产生编译结果,也就是 ngx_http_fancyindex_module.so 这个文件,然后你需要把这个文件复制到你的 Nginx 安装目录的 modules 路径里面,有的路径可能是 /etc/nginx/modules,有些可能是 /usr/share/nginx/modules,这个根据你系统的区别去自己调整

sudo cp objs/ngx_http_fancyindex_module.so <modules路径>

然后在 nginx.conf 中添加一行配置

load_module modules/ngx_http_fancyindex_module.so;

Over

至此,一个安装了 ngx_http_fancyindex_module 和 ngx_http_js_module 两个模块的 Nginx 就安装好了

Reference

[1] Installing Fancy Index Module on Nginx – https://snippets.azaky.io/installing-fancy-index-module-on-nginx

[2] Nginx module not binary compatible after compilation on Centos 7 – https://serverfault.com/questions/988250/nginx-module-not-binary-compatible-after-compilation-on-centos-7