首页模块(ngx_http_index_module)

  ngx_http_index_module模块处理以斜线字符(’/’)结尾的请求。

  首页模块 语法及语义

  index

   语法:index file …;

   语义:定义将用作索引的文件。该file名称可以包含变量。文件以指定顺序检查。列表的最后一个元素可以是具有绝对路径的文件。

   应当注意,使用索引文件会导致内部重定向,并且可以在其他位置除了请求。

   例如:

location = / {
    index index.html;
}

location / {
    ...
}

   " /“请求实际上将在第二个位置作为”/index.html"处理。也就是说当请求在第一个位置处理完后,会重定向到第二个位置继续进行处理。

  首页模块 示例

  为演示效果,在/usr/local/nginx/html/目录下新建如下目录和文件:

nginx 主页路径 nginx首页_nginx 主页路径

  在默认nginx.conf基础上增加ngx_http_index_module配置,如下:

worker_processes  1;

error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  securitit;

        location / {
	        root html/request;
	    
	        index example.html;
        }

    }

}

  此时访问http://192.168.20.9/,会直接访问到/usr/local/nginx/html/request/目录下的文件:

nginx 主页路径 nginx首页_随机首页_02

  在配置文件的server中增加location配置,配置如下:

server {
    listen       80;
    server_name  securitit;

    location / {
		root html/request;

		index example.html;
	}
	
	location ~* \.html$ {
	    root html/redirect;

	    index example.html;
	}

}

  此时访问http://192.168.20.9/,由于进行内部重定向,会访问到/usr/local/nginx/html/redirect/目录下的文件:

nginx 主页路径 nginx首页_默认首页_03

  需要注意的是,index指令并不是简单的查找文件进行响应:

  · 如果文件存在,则使用文件作为路径,发起内部重定向。

  · 内部重定向只能发生在同一个Server内部搜索。

  · 如果内部重定向发生在proxy_pass反向代理后,内部重定向也只会发生在代理配置中的同一个Server。

  随机首页模块(ngx_http_random_index_module)

  处理以斜杠字符(’/’)结尾的请求,并在目录中选择一个随机文件作为索引文件。该模块在ngx_http_index_module模块之前进行处理。

  随机首页模块 配置安装

  首先切换到Nginx源码目录,运行./configure --with-http_random_index_module命令。

cd /securitit/nginx-1.19.3
./configure --with-http_random_index_module

  配置完成后,执行make命令,但切记,不要执行make install命令。

make

  编译完成后,将nginx执行文件复制到/usr/local/nginx/sbin/下(/usr/local/nginx/是Nginx的默认安装目录),复制之前,最好将nginx备份。

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-default
cp /securitit/nginx-1.19.3/objs/nginx /usr/local/nginx/sbin/nginx

  通过上面的步骤,已成功将ngx_http_random_index_module模块增加到已安装的Nginx中。

  随机首页模块 语法及语义

  random_index

   语法:random_index on | off;

   语义:启用或禁用周围位置的模块处理。

  随机首页模块 示例

  在/usr/local/nginx/html目录下,一共有三个文件,其中50x.html和index.html是Nginx自带的,redirect.html是新建的页面:

nginx 主页路径 nginx首页_默认首页_04

  在默认nginx.conf基础上增加ngx_http_random_index_module的配置:

worker_processes  1;

error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  securitit;

        location / {
	    root html;
	    random_index on;
	    index index.html redirect.html;
        }

    }

}

  通过./nginx -s reload平滑重启Nginx之后,在浏览器中一直刷新http://192.168.20.9/,会得到随机的结果:

  index.html:

nginx 主页路径 nginx首页_Nginx_05

  50x.html:

nginx 主页路径 nginx首页_Nginx_06

  redirect.html:

nginx 主页路径 nginx首页_index_07

  总结

  ngx_http_index_module和ngx_http_random_index_module都是用来处理默认首页的,ngx_http_index_module一般处理时会经常用到,ngx_http_random_index_module的使用频度就没那么高了,但是多了解一些是没有坏处,因为未来可能在某个恰巧不巧的场景下,就会是其完美的发挥场景。