Nginx(下)Nginx配置详解

一、nginx的LAMP架构

1、nginx并发优化

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

nginx.conf参数意义

参数意义
worker_processes 2worker进程开启,最多开启8个
worker_cpu_affinity 01 10;cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
multi_accept on;告诉nginx收到一个新连接通知后接受尽可能多的连接
use epoll;使用epoll模型
开启文件高效传输模式,同时设置tcp_nopush 和tcp_nodelay 为on,可以防止网路和磁盘IO阻塞sendfile on;tcp_nopush on; tcp_nodelay on;

2、反向代理和负载均衡

(1)、默认轮询

补充:

使用nginx配置代理的时候,肯定是要用到http_proxy模块。这个模块也是在安装nginx的时候默认安装。它的作用就是将请求转发到相应的服务器。

当nginx做反向代理的时候,nginx采用HTTP/1.1协议和客户端进行通信。使用HTTP/1.0协议和后端,也就是被代理的服务器进行通信。

在配置反向代理的时候,只要配置上这个参数就能完成反向代理的功能,其余的参数结合自己的实际情况去添加,不添加也可以。

字段:proxy_pass URL

proxy_pass 后边配置ip地址也可以,配置域名也可以,当然是代理服务器必须能够访问后端服务器。

此参数要配置在location里边。
cd /usr/local/nginx/conf/
vim nginx.conf

http {
        upstream westos {
				server 172.25.76.2:80;
                server 172.25.76.3:80;
                }
    include       mime.types;
    default_type  application/octet

server {
                listen 80;
                server_name www.westos.com
                location / {
						proxy_pass http://westos;
					}
nginx -t
nginx -s reload

修改vm2和vm3的发布文件内容,方便后续测试查看实验效果

cd /usr/local/nginx/html
echo vm2 > index.html
curl localhost
vm2

在真机修改域名的地址解析

vim /etc/hosts
172.25.76.1		www.westos.com

在这里插入图片描述
在真机测试curl www.westos.com发现vm2和vm3出现的频率为1:1
在这里插入图片描述

(2)、权重轮询
cd /usr/local/nginx/conf
vim nginx.conf
为两台轮询主机设置权重
nginx -t
nginx -s reload

在这里插入图片描述真机测试
for i in {1..10} ;do curl www.westos.com ; done
在这里插入图片描述

(3)、ip_hash
ip_hash;
nginx -t
nginx -s reload

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

(4)、备用机
vim /usr/local/nginx/conf/nginx.conf
#ip_hash;
server localhost backup;
server 172.25.76.2:80 weight=4;
server 172.25.76.3:80;

nginx -t
nginx -s reload 

在这里插入图片描述停掉vm2和vm3的nginx服务,在真机访问www.westos.com
在这里插入图片描述当有一台主机nginx服务时,备用主机将不会被启用。这里启动了vm2的nginx服务
在这里插入图片描述

3、nginx平滑升级

下载nginx新版本软件,正常执行./configure 和make 但不要执行make install
备份原程序

cd /usr/local/lnmp/nginx/sbin	
cp nginx nginx.old
cd auto/
cd cc/
vim gcc
注释掉该行
CFLAGS="$CFLAGS -g"

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

在这里插入图片描述备份旧版本的文件
在这里插入图片描述
ps ax | grep nnginx查看nginx进程
在这里插入图片描述升级新程序

kill -USR2 master进程

kill -USR2杀掉master进程
关闭原worker进程但保留主进程:为了回退
在这里插入图片描述kill -WINCH 主进程
查看新进程
在这里插入图片描述cuel -I localhost或nginx -v查看当前运行的nginx 版本号
在这里插入图片描述

4、nginx版本回退

cp -f nginx.old nginx	还原nginx程序
kill -HUP old process	唤醒原进程
kill -WINCH new process	回收新版本的worker进程	
kill -QUIT new process	关闭新版本主进程

5、nginx限流

实验素材准备:
在这里插入图片描述实验前的对照组测试,在真机进行测试

 ab -c10 -n 10 http://172.25.76.1/download/vim.jpg

在这里插入图片描述

(1)、控制单IP并发连接数

在vm1修改nginx配置文件,检测语法,重启服务

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

http {
limit_conn_zone $binary_remote_addr zone=addr:10m; 
#$binary_remote_addr 表示通过remote_addr这个标识来做限制
#zone=addr:10m 表示生成一个大小为10M,名字为addr的内存区域
...
server {
location /download/ {
    limit_conn addr 1;		#限制并发数
    limit_rate 50k;			#限制带宽
   }
}

在这里插入图片描述在真机测试,由于被设置了限流,有部分请求被拒绝
在这里插入图片描述

(2)、限制请求数和速度
限制单位时间内的请求数目,以及速度限制:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
#rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次
...
server {
location / {
       limit_req zone=one;
#	 limit_req zone=one burst=5
#	 limit_req zone=one burst=5 nodelay;
}
}

在这里插入图片描述在真机测试

ab -c1 -n 10 http://download/vim.jpg

在这里插入图片描述

(3)、排队

超过指定访问数量则排队访问

cd /use/local/nginx/conf
vim nginx.conf
location /download {
	limit_conn addr 1;
	limit_req zone=one burst=5;
	#设置一次访问5个。超过的排队等待。之前的时实验设定为一秒通过一个请求因此-n 10共会访问两次。访问时间为10秒左右
nginx -t
nginx -s reload

在这里插入图片描述在排队等待时会出现等待的感觉(这种感觉不太好受哈哈哈哈)
在这里插入图片描述最终用时9。002秒,10个请求全部通过
在这里插入图片描述

(4)、无延迟

如果请求通过需要等待很长时间会直接影响用户体验或时工作效率,因此须要时应当设置对所有请求无延迟

cd /use/local/nginx/conf
vim nginx.conf
---
	location /download {
		imit_conn addr 1;
		limit_req zone=one burst=5 nodelay;
			}
---
nginx -t
nginx -s reload

真机测试
在这里插入图片描述但这种无延迟时是相对的,当请求数量大到一定程度的时候,也会出现等待的情况。

(5)、限制带宽

cd /use/local/nginx/conf
vim nginx.conf
---
	location /download {
		imit_conn addr 1;
		#limit_req zone=one burst=5 nodelay;
		limit_rate 50k;
				}
---
nginx -t
nginx -s reload

限制带宽为50k,测试文件大小为444k,大致需要80s左右

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

5、nginx配置管理

(1)、自动索引

下载方便

location / {
    autoindex on;
}

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

(2)、Nginx expire缓存配置

缓存可以降低网站带宽,加速用户访问

location ~ .*\.(gif|jpg|png)$ {
    expires 365d;
    root /www;
}

在这里插入图片描述curl命令访问素材文件,发现文件可以缓存到2022年(即一年之后)
在这里插入图片描述

(3)、日志轮询
cd /opt/
ls
cat nginx.sh
chmod +x nginx.sh
./nginx.sh
cd /use/local/nginx/logs/
ls
access_2021-09-25.log

在这里插入图片描述给脚本执行权限,执行脚本,切入到日志目录,查看生成的日志文件
在这里插入图片描述禁用不必要的日志记录,以节省磁盘IO的消耗

location ~ .*\.(js|jpg|jpeg|png|css|bmp|gif)$ {
	access_log off;
}

        location /status {
                stub_status on;
                access_log off;
                }
nginx -t
nginx -s reload

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
站点目录和文件的限制

location ~ ^/images/.*\.(sh|php)$ {
                deny all;
        }

除本机,其他主机不可访问该目录
在这里插入图片描述
在真机访问vm1的status目录
在这里插入图片描述本机访问status目录,访问成功。
在这里插入图片描述

(4)、中文乱码
vim nginx.conf
charset utf-8;

设置中文乱码前
在这里插入图片描述
设置中文乱码后

在这里插入图片描述

6、nginx重定向

(1)、防止域名恶意解析到服务器ip
return 500

在这里插入图片描述
访问本机发现500的错误
在这里插入图片描述

在这里插入图片描述

(2)、重定向域名

编辑配置文件,设定将所有访问请求重定向至指定域名

cd /use/local/nginx/conf
vim nginx.conf
---
    server {
        listen       80;
        server_name  localhost;
        rewrite ^(.*) http://www.baidu.com permanent;
---
nginx -t
nginx -s reload

在这里插入图片描述
浏览器测试:输入172.25.76.1会跳转至www.baidu.com
在这里插入图片描述在这里插入图片描述

(3)、重定向端口
 cd /etc/pki/tls/certs
 make cert.pem	#生成证书

在这里插入图片描述在这里插入图片描述查看证书是否生成
在这里插入图片描述

    server {
        listen       443 ssl;
        server_name  www.westos.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   html;
            index  index.html index.htm;
        }
    }

server {
        listen 80;
        server_name www.westos.com;

        rewrite ^/(.*)$ https://www.westos.com/$1 permanent;
        #location / {
        #       proxy_pass http://westos;
        #}
        }
}
---
nginx -t
nginx -s reload

浏览器测试
在这里插入图片描述
curl语句测试
在这里插入图片描述

(3)、虚拟机重定向
a、www.westos.org 重定向bbs.westos.org
cd ..(nginx)
cd html
mkdir bbs
vim index.html
echo bbs.wetos.com > index.html
mv bbs/ / 	#移动到根目录
vim nginx.conf
///
server {    
        listen 80;
        server_name www.westos.com;
        
        #rewrite ^/(.*)$ https://www.westos.com/$1 permanent;
        rewrite ^/bbs$ http://bbs.westos.com permanent;
        rewrite ^/(.*)$ http://bbs.westos.com/$1 permanent;
     
        #location / {
        #       proxy_pass http://westos;
        #       }
        }
server {
        listen 80;
        server_name bbs.westos.com;

        location / {
                root /bbs;
        index index.html;
                }
        }
///
nginx -s reload

在这里插入图片描述

b、bbs.westos.com定向到www.westos.com/bbs

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

7、nginx防盗链

盗窃主机vm2: 172.25.76.2
防盗主机vm1: 172.25.76.1
实验效果:
盗窃主机vm2不可以访问vm1上的图片,且会访问到404或者禁止盗链的图片

在vm2中发布目录编写html文件
在这里插入图片描述浏览器访问172.25.76.2,出现vim.jpg图片
在这里插入图片描述修改vm1的nginx配置文件,添加防盗链配置
在这里插入图片描述
浏览器访问vm2发现图片无法访问
在这里插入图片描述再修改配置文件,重定向到防盗图片
在这里插入图片描述差一张图,妹做出来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值