Nginx基础入门-web模块
连接模块
连接模块:http_stub_statu_module,展示用户和nginx链接数量信息。
查询是否安装:
nginx -V 2>&1 | grep stub_status 启动状态模块
配置状态模块
vim /etc/nginx/conf.d/default.conf #某一个网站server {
....
location /nginx_status { #启用该模块
stub_status;
allow all;
}
.....
}systemctl restart nginx访问结果

Active connections: 22	#当前活动的连接数
server accepts handled requests	 #服务器接受处理请求 
17		#总连接数connection(TCP)
17		#成功的连接数connection (TCP)
24 	        #总共处理的请求数requests(HTTP)
Reading: 2	        #读取客户端Header的信息数	     请求头
Writing: 1		#返回给客户端的header的信息数	 响应头
Waiting: 19	        #等待的请求数,开启了keepalive
随机主页
随机主页:random_index_module,将主页设置成随机页面,是一种微调更新机制。
启动随机主页模块
mkdir /app #创建主页目录
#创建多个主页
server{ location / {#root   /usr/share/nginx/html;#index  index.html index.htm;root /app;random_index on; #启动随机主页
}
}systemctl restart nginx#请注意隐藏文件并不会被随机选取替换模块
替换模块:sub_module,如果我们用模板生成网站的时候,因为疏漏或者别的原因造成代码不如意,但是此时因为文件数量巨大,不方便全部重新生成,那么这个时候我们就可以用此模块来暂时实现纠错。另一方面,我们也可以利用这个实现服务器端文字过滤的效果。
启动替换模块
vim /etc/nginx/conf.d/default.conf方法一
server {
sub_filter nginx 'apache'; #替换模块  将nginx  替换成 apache
sub_filter_once on; #单次替换 开启
location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
}方法二
1 准备一个被替换的java脚本
vim /usr/share/nginx/html/hello.js 
2 主页插入按钮
vim /usr/share/nginx/html/index.html
3 启动替换
vim /etc/nginx/nginx.confsub_filter nginx 'apache';
sub_filter </head> '</head><script type="text/javascript" src="hello.js"></script>';
sub_filter_once off;4 重启服务,测试页面。文件读取
文件读取:ngx_http_core_module,nginx的优化模块
语法:
Syntax: 	sendfile on | off;
Default: 	sendfile on;
Context: http, server, location, if in locationSyntax: 	tcp_nopush on | off;
Default: 	tcp_nopush off;
Context: http, server, locationSyntax: 	tcp_nodelay on | off;
Default: 	tcp_nodelay on;
Context: http, server, location原理介绍
使用 sendfile()来进行网络传输的过程:硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协议栈sendfile() 不但能减少切换次数而且还能减少拷贝次数。使用tcp_nopush()网络传输效率提升当包累计到一定大小后再发送。使用tcp_nodelay()数据包立即发送出去。
开启或关闭nginx使用TCP_NODELAY选项的功能。 这个选项仅在将连接转变为长连接的时候才被启用。
TCP_NODELAY是禁用Nagle算法,即数据包立即发送出去。
由于Nagle和DelayedACK的原因,数据包的确认信息需要积攒到两个时才发送,长连接情况下,奇数包会造成延时40ms,所以tcp_nodelay会将ack立刻发出去。 如果不在长连接时,可以关闭此模块,因为ack会被立刻发出去。启用文件读取模块
#某个网站或全部网站的配置文件server {
...
location /video/ {sendfile        on;tcp_nopush  on;
}
...
}
默认启动,无需验证文件压缩
文件压缩:ngx_http_gzip_module,启动该模块,使文件传输前进行压缩,提升传输效率。
语法:
Syntax: 	gzip on | off;
Default: 	gzip off;
Context: http, server, location, if in locationSyntax: 	gzip_comp_level level;
Default: 	gzip_comp_level 1;(1~9)
Context: http, server, locationSyntax: 	gzip_http_version 1.0 | 1.1;
Default: 	gzip_http_version 1.1;
Context: http, server, location启动压缩文件模块
http { #在http标签中启动该功能gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; 
gzip_static on; #gzip_static on;# nginx对于静态文件的处理模块systemctl restart nginx页面缓存
页面缓存:ngx_http_headers_module,expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入。 Nginx(expires 缓存减轻服务端压力)
语法
Syntax: 	expires [modified] time;expires  epoch | max | off; epoch:指定“Expires”的值为 1 max:指定“Expires”的值为10年。-1:指定“Expires”的值为当前服务器时间-1s,即永远过期。off:不修改“Expires”和"Cache-Control"的值Default: 	expires off;
Context: http, server, location, if in location原理
无缓存,每次访问服务器,均是全文传输。 开启缓存可以加速浏览网站。
启动缓存模块
vim /etc/nginx/conf.d/default.conf location / {root   /usr/share/nginx/htmlindex  index.html index.htm;expires 24h;}5 再次浏览页面,观察响应头中出现服务器回复的缓存时间

防盗链
防盗链:ngx_http_referer_module
语法:
Syntax: 	valid_referers none | blocked | server_names | string ...;
Default: 	—
Context: server, location日志原理
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';日志格式中的http_referer是记录,访问点引用的URL。也就是超链接的上一级地址。
通过这段地址,可以发现一种网络行为——盗链。非法盗链会影响站点的正常访问。
通过http_referer模块可以控制这一点。防止非法盗链现象。启动防盗链功能
#某个网站location / {root   /ts.com;index  index.html index.htm;valid_referers none blocked *.ts.com;if ($invalid_referer) {return 403;}}希望某些网站调用超链接location / {root   /a.com;index  index.html index.htm;valid_referers none blocked *.a.com        server_name  192.168.100.*  ~tianyun ~\.google\. ~\.baidu\.   b.com;if ($invalid_referer) {return 403;}}