Linux运维之nginx常用模块

Linux运维之nginx常用模块

  • nginx中I/O复用原理

在这里插入图片描述

  • I/O的5种模式对比
    在这里插入图片描述
  • nginx的master process和worker process调用

调用流程:
在这里插入图片描述
配置步骤:
自行准备好nginx相关的源码包

在这里插入图片描述
解压nginx1.14版本
并修改gcc文件,减少安装大小加快安装

tar zxf nginx-1.14.2.tar.gz 
cd nginx-1.14.2
ls
vim auto/cc/gcc 
#CFLAGS="$CFLAGS -g"

在这里插入图片描述
在这里插入图片描述
安装编译过程中有依赖性的软件及支持模块的软件(自行准备)

yum install pcre-devel openssl-devel gcc -y
yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y

在这里插入图片描述
在这里插入图片描述

开始编译安装

./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
make && make install

在这里插入图片描述
在这里插入图片描述
创建nginx用户,设置软连接
进入好安装好的nginx目录并编写配置文件nginx.conf

useradd nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
cd /usr/local/nginx/
vim conf/nginx.conf
更改如下:
user nginx nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
暂时关闭nginx虚拟机,打开virt-manager
为nginx虚拟机添加cpu核 设置完毕店家右下角apply,重新开启nginx虚拟机
在这里插入图片描述
重新编写nginx配置文件
并开启nginx

vim /usr/local/nginx/conf/nginx.conf
worker_processes  auto;

nginx

在这里插入图片描述
在这里插入图片描述
查看进程
可明显发现有1个master4个work

ps -ef

在这里插入图片描述
再次编写配置文件
并检测语法重启nginx

vim /usr/local/nginx/conf/nginx.conf
worker_cpu_affinity 0001 0010 0100 1000;

events {
    worker_connections  10240;
}

nginx -t
nginx -s reload

在这里插入图片描述
设定文件系统

syscrl -a | grep file  ##查看最大支持
ulimit -a  ##查看当前
ulimit -n 10240  #设定为10240
ulimit -a  ##再次查看

在这里插入图片描述
查看是否work设置成功
(如果设定不成功,请锡安关闭nginx并再次开启查看或者在/etc/security/limits.conf修改)

ps aux
cat /proc/2153/limits

在这里插入图片描述
设定工作方式为epoll
并进行压力测试

vim /usr/local/nginx/conf/nginx.conf
events {
    use epoll;
    worker_connections  10240;
}

nginx -t
nginx -s reload

在这里插入图片描述
在这里插入图片描述
查看压力测试前nginx相关日志大小

cd /usr/local/nginx/logs
du -sh access.log

在这里插入图片描述
在真机进行压力测试

ab -c 1 -n 3000 http://172.25.11.1/index.html

在这里插入图片描述
nginx虚拟机再次查看日志大小

cd /usr/local/nginx/logs
du -sh access.log

在这里插入图片描述
引申:如何在每日的24:00即次日的0:00保存命名为当日的nginx日志?

mv access.log `date +%F -d -1day`_access.log

在这里插入图片描述
引申:如何用命令查看主及cpu内核数量?

cat /proc/cpuinfo | grep 'processor' | wc -l

在这里插入图片描述

  • nginx中限制连接和请求的设定

编写nginx配置文件
设定一个客户端只能有一个并发,多了则会报错

vim /usr/local/nginx/conf/nginx.conf
新添加如下:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

        location /download {
        limit_conn addr 1;   
        }

nginx -t
nginx -s reload

说明
limit_conn_zone:用来限制同一时间的连接数,即并发数 
$binary_remote_addr:是限制同一客户端 
zone=addr:10m;:表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次
limit_req_zone:用来限制代为时间的请求数,即速率的限制
rate=1r/s;:1s中不超过一个请求

在这里插入图片描述
在这里插入图片描述
新创建发布目录并将一张图片拷贝过来

cd /usr/local/nginx/html
mkdir download
cd download/
cp /nginx/vim.jpg .

在这里插入图片描述
设定限制带宽,美妙最到50s

vim /usr/local/nginx/conf/nginx.conf

        location /download {
        limit_rate 50k;
        }

nginx -t
nginx -s reload

在这里插入图片描述

  • nginx的端口转发

再开启一台虚拟机server2
在此台机器对nginx进行编译安装,过程参照上方
修改配置文件

vim /usr/local/nginx/conf/nginx.conf
编写如下
user nginx nginx;

http {
    include       mime.types;
    default_type  application/octet-stream;
    upstream cc {
        server 172.25.11.1:80;
}

server {
        listen 80;
        server_name www.cc.com;
        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://cc;
}
}
}

nginx -t
nginx -s reload

在这里插入图片描述
在这里插入图片描述

在server1上同样对nginx配置文件编写

vim /usr/local/nginx/conf/nginx.conf
编写如下:
server {
        listen       80;
        server_name  localhost;
        set_real_ip_from 172.25.11.2;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;

 location /download {
        #limit_conn addr 1;
        limit_rate 50k;
        }

nginx -t
nginx -s reload

在这里插入图片描述
在server1上编写默认发布页面:

cd /usr/local/nginx/html
>index.html
vim index.html
server1

在这里插入图片描述
测试:
在真机器上设定本地解析并测试

vim /etc/hosts
172.25.11.2		www.cc.com

curl www.cc.com

在这里插入图片描述

在这里插入图片描述

  • nginx的热更新

热更新:在不关闭原nginx服务的前提下,对nginx进行更新升级

查看当前nginx版本信息(安装nginx时没有删除版本信息)

nginx -V

在这里插入图片描述
将之前做过的软连接的nginx命令重命名备份,防止更新过后混淆

cd /usr/local/nginx/sbin
cp nginx nginx.old

准备好需要更新的nginx1.15版本的压缩包
解压并编译安装 切忌不要删除nginx版本信息,否则效果查看不出来

tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9
vim auto/cc/gcc  

./configure --prefix=/usr/local/nginx/
make  ##不需要make install

在这里插入图片描述
在这里插入图片描述
编译安装好把nginx1.15版本的nginx命令发送到/usr/local/nginx/sbin/下

cd /nginx/nginx-1.15.9
cd objs/
cp -f nginx /usr/local/nginx/sbin/nginx 
y 覆盖

在这里插入图片描述
查看进程并执行kill信号操作

ps aux 查看进程
kill -USR2 2240
kill -WINCH 2240

在这里插入图片描述
查看进程父子关系

ps -ef

在这里插入图片描述
执行nginx发现报错
注释掉相关的内容并重启服务并查看版本

nginx
nginx -s reload
nginx -V

在这里插入图片描述
在这里插入图片描述

  • 限制网页图片大小

编写配置文件:

vim /usr/local/nginx/conf/nginx.conf
load_module modules/ngx_http_image_filter_module.so;

 location /download {
        image_filter resize 150 100;
        }

nginx -t
nginx -s reload

在这里插入图片描述
在这里插入图片描述
打开浏览器F5刷新,并F12打开点击network查看图片大小并与原图片大小对比

在这里插入图片描述
在这里插入图片描述

  • nginx的网页安全认证(https)

编写配置文件

vim /usr/local/nginx/conf/nginx.conf
server {
        listen       443 ssl;
        server_name  www.cc.com;

        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /web;
            index  index.html index.htm;
        }
    }

}

nginx -t
nginx -s reload

在这里插入图片描述
生成安全认证文件

cd /etc/pki/tls/certs
make cert.pem
根据提示输入
cn
shaanxi
xi'an
cc
linux
server1
[email protected]

cp cert.pem /usrl/local/nginx/conf/

在这里插入图片描述
在这里插入图片描述
创建发布目录并编写网页
检测语法并重启nginx

mkdir /web
vim /web/index.html
https:server1

nginx -t
nginx -s reload

做好真机本地解析
打开浏览器测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • nginx网页重写

编写配置文件

vim /usr/local/nginx/conf/nginx.conf
server {
        listen 80;
        server_name www.cc.com;
        rewrite ^/(.*)$ https://www.cc.com/$1 permanent;
}

nginx -t
nginx -s reload

在这里插入图片描述
用真机测试:
发现输出www.cc.com域名自动跳转https:172.25.11.1

curl -I www.cc.com

在这里插入图片描述
设置不同域名重写

server {
        listen 80;
        server_name www.cc.com;
        #rewrite ^/(.*)$ https://www.cc.com/$1 permanent;
        rewrite ^/bbs$ https://bbs.cc.com/index.html permanent;
}
}

nginx -t
nginx -s reload

在这里插入图片描述
创建发布目录并编写网页

mkdir /bbs
vim bbs/index.html
bbs.cc.com

在这里插入图片描述

在真机做本地解析并测试:
在这里插入图片描述
在这里插入图片描述
编写配置文件

vim /usr/local/nginx/conf/nginx.conf
server {
        listen 80;
        server_name www.cc.com bbs.cc.com;
        #rewrite ^/(.*)$ https://www.cc.com/$1 permanent;
        #rewrite ^/bbs$ https://bbs.cc.com/index.html permanent;
        if ($host = "bbs.cc.com") {
                rewrite ^/(.*)$ http://www.cc.com/bbs/$1 permanent;
        }
        location / {
                root /web;
                index index.html;
}
}
}

nginx -t
nginx -s reload

在这里插入图片描述
创建发布目录并编写网页

mkdir /bbs
vim bbs/index.html
bbs.cc.com

在这里插入图片描述
在真机做好本地解析并测试

curl -I bbs.cc.com

在这里插入图片描述

  • nginx盗链图片

再另一台需要盗链的虚拟机设置nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

server {
        listen 80;
        server_name daolian.cc.com;
        charset utf-8;
        location / {
                root /web;
                index index.html;
}
}
}

在这里插入图片描述
编写盗链网页

mkdir /web
vim /web/index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://www.cc.com/vim.jpg">

</body>


</html>

nginx -t
nginx -s reload

在server1注释掉之前重写的内容
并在/web放入一张图片
在这里插入图片描述
在这里插入图片描述

在真机做好本地解析并打开浏览器测试
在这里插入图片描述

  • 图片防盗链

需要在被盗链的nginxweb端即server1设置

vim /usr/loca/nginx/conf/nginx.conf
  location ~* \.(gif|jpg|png|jpeg)$ {
                root /web;
                valid_referers none blocked www.cc.com;
                if ($invalid_referer) {
                        return 403;
}
}
}
}

nginx -t
nginx -s reload

在这里插入图片描述
刷新网页查看效果
在这里插入图片描述

  • END

猜你喜欢

转载自blog.csdn.net/weixin_44828950/article/details/94351116
今日推荐