http{
......
server_tokens off;
......
}
实验步骤
#安装环境
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
#解压源码包到opt目录下
[root@localhost opt]# tar zxvf nginx-1.12.2
#创建程序型用户
[root@localhost opt]# useradd -M -s /sbin/nologin nginx
#编译安装
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
#修改nginx配置文件
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
http{
......
server_tokens off;
......
}
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
#开启服务并 验证
[root@localhost nginx-1.12.2]# nginx
[root@localhost nginx-1.12.2]# netstat -antp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22841/nginx: master
[root@localhost nginx-1.12.2]# curl -I http://20.0.0.26
HTTP/1.1 200 OK
Server: nginx ===>不显示版本
Date: Mon, 10 Aug 2020 10:43:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 10 Aug 2020 10:41:18 GMT
Connection: keep-alive
ETag: "5f31244e-264"
Accept-Ranges: bytes
[root@localhost ~]# vim /opt/nginx-.12.0/src/core/nginx.h
......
#define NGINX_VERSION "1.1.1" ===>修改版本号为1.1.1
......
实验步骤
#修改源码文件
[root@localhost opt]# vim nginx-1.12.2/src/core/nginx.h
......
#define NGINX_VERSION "1.12.2" ===>修改成"1.1.1"
......
#安装环境
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
#解压源码包到opt目录下
[root@localhost opt]# tar zxvf nginx-1.12.2
#创建程序型用户
[root@localhost opt]# useradd -M -s /sbin/nologin nginx
#编译安装
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
#开启服务并 验证
[root@localhost nginx-1.12.2]# nginx
[root@localhost nginx-1.12.2]# netstat -antp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22841/nginx: master
[root@localhost nginx-1.12.2]# curl -I http://20.0.0.26
HTTP/1.1 200 OK
Server: nginx/1.1.1 ===>显示的时在源码里面修改后的
Date: Mon, 10 Aug 2020 10:43:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 10 Aug 2020 10:41:18 GMT
Connection: keep-alive
ETag: "5f31244e-264"
Accept-Ranges: bytes
Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制
Nginx默认使用nobody用户账号与组账号
编译安装时指定用户与组
[root@localhost ~]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
修改配置文件指定用户与组
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody; ===>将注释"#"去掉,nobody改成用户与组
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态页面设置,对动态页面不设置缓存时间
修改配置文件,在http{…}或者server{…}或者location{…}加入对特定内容的过期参数
修改Nginx的配置文件,在location{…}加入expires参数
[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
......
location ~\.(gif|jpg|jpeg|png|bmp|ico)${ ===>对格式为gif,jpg,jpeg,png,bmp,ico结尾的文件
root html;
expires 1d; ===>缓存时间一天
}
随着Ngin运行时间增加,日志也会增加.为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
太大的日志文件对监控时一个大灾难
定期进行日志文件的切割
Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割
通过Linux的周期性计划任务进行日志切割
设置时间变量
设置保存日志路径
将目前的日志文件进行重命名
重建新日志文件
删除时间过长的日志文件
设置周期性任务,定期执行脚本自动进行日志分割
#!/bin/bash
#日志分割
#Filename:fenge.sh
#显示一天前的时间
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
#没有目录创建一个目录
[ -d $logs_path ]||mkdir -p $logs_path
#移动并重命名
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
#重新加载
kill -HUP $(cat $pid_path)
#找到30天前的日志并删除
find $logs_path -mtime +30 | xarge rm -rf
实验步骤
#自行手工编译nginx
#编写脚本
[root@localhost opt]# vim /opt/fenge.sh
#!/bin/bash
#Filename:fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ]||mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -HUP $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf
#创建周期性任务计划实现自动化
[root@localhost opt]# crontab -e
0 01 * * * /opt/fenge.sh ===>指定某一个时间运行
为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
Keepalive_timeout ===>设置连接保持超时时间
Client_header_timeout ===>指定等待客户端发送请求头的超时时间
Client_body_timeout ===>设置请求主体的超时时间
实验步骤
#自行手工编译nginx
#修改nginx配置文件
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
......
keepalive_timeout 100;
Client__header_timout 80;
Client_body_timeout 45;
......
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
修改配置文件,修改进程配置参数
一般设为CPU的个数或者核数
在高并发情况下可设置为CPU个数或者核数的2倍
使用ps aux查看运行进程数的变化情况
[root@localhost ~]# cat /proc/cpuinfo | grep "physical" ===>可以查看可以修改的最大核心数
4
[root@localhost ~]# vim /usr/local/nginx/conf/nginx
worker_processes 4;
实验步骤
#自行手工编译nginx
#修改nginx配置文件
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
......
worker_processes 4;
......
Nginx的nginx_http_gzip_module压缩提供了对文件内容进行压缩的功能,允许Nginx服务器将输出内容2发送到客户端之前进行压缩,这样文件内容变小传输速度变快,以便于节约网站的带宽,提升用户体验,模块默认已经安装!
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
gzip on; ===>开启gzip压缩输出
gzip_min_length 1k; ===>用于设置允许压缩的页面最小字节数
gzip_buffers 4 16k; ===>表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间存储gzip压缩结果
gzip_http_version 1.1; ===>设置识别http协议版本,默认是1.1
gzip_comp_level 2; ===>gzip 压缩比, 1-9等级
gzip_types text/plain application/x-javascrip text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json; ===>压缩类型,就是对哪些网页文档启用压缩功能
gzip_vary on; ===>压缩包缓存
实验步骤
#自行安装nginx
#修改配置文件
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
......
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascrip text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_vary on;
......
实验结果
#利用fiddler抓包查看
在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
......
location ~*\.(jpg|gif|swf)$ {
valid_referers none blocked *.test.com test.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.test.com/error.png;
}
}
实验环境
CentOS 7.6 ===>两台一台需要用来盗链
Win 10 ===>用来验证使用
实验步骤
#自行安装域名解析===>博客内有文章详细写可以自行搜索了查看
#安装nginx(IP地址20.0.0.26)
#安装环境
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel bind
#解压源码包到opt目录下
[root@localhost opt]# tar zxvf nginx-1.12.2
#创建程序型用户
[root@localhost opt]# useradd -M -s /sbin/nologin nginx
#编译安装
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
#修改配置文件
[root@localhost opt]# vim /usr/local/nginx/conf/nginx.conf
......
location ~*\.(jpg|gif|swf)$ {
valid_referers none blocked *.test.com test.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.test.com/error.png;
}
}
......
#配置网页站点
[root@localhost html]# vim /usr/local/nginx/html/index.html
......
Welcome to nginx!
......
[root@localhost html]# nginx
#安装nginx(IP地址20.0.0.25)
#安装环境
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel bind
#解压源码包到opt目录下
[root@localhost opt]# tar zxvf nginx-1.12.2
#创建程序型用户
[root@localhost opt]# useradd -M -s /sbin/nologin nginx
#编译安装
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
#配置网页站点
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/html/index.html
this is daolian web
[root@localhost nginx-1.12.2]# nginx
实验结果
在浏览器上面输入"www.test.com"
在浏览器上面输入"20.0.0.25"
优化原因:
服务器为云服务器,运行了个人论坛,内存为15G,fpm进程数为20,内存消耗近1G,处理比较慢
优化参数调整
FPM启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多可以有20个进程存在
[root@localhost ~]# vim php-fpm.conf
pm=dynamic ===>将以动态的方式产生fpm进程
pm.max_children=20 ===>指定启动的进程数量
pm.start_servers = 5 ===>动态方式下初始的进程数量
pm.min_spare_servers = 2 ===>动态方式下最小的fpm空闭进程数
pm.max_spare_servers = 8 ===>动态方式下最大的fpm空闭进程数
优化原因:
服务器为云服务器,运行了个人论坛,内存为15G,fpm进程数为20,内存消耗近1G,处理比较慢
优化参数调整
FPM启动时有5个进程,最小空闲2个进程,最大空闲8个进程,最多可以有20个进程存在
[root@localhost ~]# vim php-fpm.conf
pm=dynamic ===>将以动态的方式产生fpm进程
pm.max_children=20 ===>指定启动的进程数量
pm.start_servers = 5 ===>动态方式下初始的进程数量
pm.min_spare_servers = 2 ===>动态方式下最小的fpm空闭进程数
pm.max_spare_servers = 8 ===>动态方式下最大的fpm空闭进程数