nginx安装与相关部署

nginx简介

Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。

其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.安装nginx

1.1解压和安装nginx

下载地址:https://nginx.org/en/download.html

 tar zxf nginx-1.20.1.tar.gz   //解压
 cd nginx-1.20.1/
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
  //自定义配置模块
  yum install -y gcc   //安装依赖语言包
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
  yum install -y pcre-devel   //根据提示缺少什么就装什么
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
 yum install -y openssl-devel
  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

[root@server1 objs]# make   //编译
[root@server1 objs]# make install  //安装

标志编译成功
在这里插入图片描述

出现Makefile标志安装成功

在这里插入图片描述
安装完成后会自动在/usr/local下生成一个nginx文件夹

[root@server1 objs]# cd /usr/local/nginx/sbin
[root@server1 sbin]# ls
[root@server1 sbin]# netstat -antlup  //查看端口
[root@server1 sbin]# ./nginx        //启动服务
[root@server1 sbin]# curl localhost   //查看连接信息
 [root@server1 sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin   //建立软连接,进行全局部署

在这里插入图片描述

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

1.2提高安全性和隐藏版本号


nginx
cd nginx-1.20.1/  //进入目录
vim auto/cc/gcc    //
nginx -s reload
vim src/core/nginx.h     //此文件中隐藏版本号
nginx -s reload
./configure  重新编译安装
make
make install
cd objs/    
du -h nginx  查看nginx大小,发现缩小很多

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

vim auto/cc/gcc
在这里插入图片描述vim src/core/nginx.h
在这里插入图片描述
不显示版本号
在这里插入图片描述

改变前:
在这里插入图片描述
改变后:提高安全性
在这里插入图片描述

1.3 设置开机自启

vim /usr/lib/systemd/system/nginx.service

配置文件内容

  [Unit]
   Description=The NGINX HTTP and reverse proxy server
   After=syslog.target network.target remote-fs.target nss-lookup.target
   
   [Service]
   Type=forking
   PIDFile=/usr/local/nginx/logs/nginx.pid
   ExecStartPre=/usr/local/nginx/sbin/nginx -t
   ExecStart=/usr/local/nginx/sbin/nginx
  ExecReload=/usr/local/nginx/sbin/nginx -s reload
  ExecStop=/bin/kill -s QUIT $MAINPID
  PrivateTmp=true
  
  [Install]
  WantedBy=multi-user.target

在这里插入图片描述

systemctl daemon-reload ##刷新服务列表 
systemctl enable --now nginx.service ##启动nginx服务

在这里插入图片描述

2.并发优化


cd /usr/local/nginx/conf                              
useradd -d /usr/local/nginx -M -s /sbin/nologin nginx   //添加一个没有shell的用户
vim nginx.conf           
//
user  nginx;
worker_processes  auto;      //并发数由1变为自动
//
events {
worker_connections  65535;     //允许访问量
}
//
cd /etc/pam.d
vim /etc/security/limits.conf   
//
ngnix  - nofile 65536	//最后一行加入最大访问数量

//
nginx -s eload


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

3.负载均衡

准备工作

vm1中,

scp -r /usr/local/nginx vm2:/usr/local/  //复制nginx到vm2
scp -r /usr/local/nginx vm3:/usr/local/  //复制nginx到vm3
nginx -t               //测试
nginx -s reload
cd /usr/local/nginx/html
echo server1 > index.html   编辑默认发布页


vm2中,
添加nginx用户,建立软连接进行全局部署,并开启nginx服务

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin   // 软连接建立全局部署
useradd -d /usr/local/nginx/ -M -s /sbin/nologin nginx  //添加用户
cd /usr/local/nginx/html
echo server2 > index.html       //编辑测试页
nginx     //启动服务

vm3中的部署同vm2中相同

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin       //软连接建立全局部署
useradd -d /usr/local/nginx/ -M -s /sbin/nologin nginx   //添加用户
cd /usr/local/nginx/html
echo server3> index.html       //编辑测试页
nginx     //启动服务


3.1默认轮询(改配置文件后一定要重启nginx)

cd /usr/local/nginx/conf/
vim nginx.conf     //修改配置文件

nginx.conf 中的代码


17 http {
 18         upstream westos {
 19            server 192.168.1.2:80;  //添加主机
 20            server 192.168.1.3:80;   //添加主机
 21          }
 22 
 23     include       mime.types;
 24     default_type  application/octet-stream;
 25 


120 server {
121         listen 80;
122         server_name www.westos.org;
123         location / {
124                 proxy_pass http://westos;   //反向代理
125                 }
126         }
127 }



主机中进行地址解析

[root@localhost ~]# vim /etc/hosts
192.168.1.1 www.westos.org

主机中,进行测试
实现默认轮询

在这里插入图片描述

3.2设置权重

在不设置权重的情况下,权重默认为1;

设置server2的权重为2
在这里插入图片描述

结果如图,每连接两次server2,连接1次server3
在这里插入图片描述

3.3利用nginx服务器作为备用后端

将服务器作为备用后端,当vm2正常运行时,vm1不负载
在这里插入图片描述让vm2宕掉,此时vm1开始运行
在这里插入图片描述

3.4 ip_hash

当设置ip_hash后,谁的权重大谁运行
在这里插入图片描述

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

4.平滑升级&版本回退

4.1 平滑升级

cd

make
不要make install
cd /usr/local/lnmp/nginx/sbin	
cp nginx nginx.old                       //备份原程序
cd objs/
\cp -f nginx /usr/local/nginx/sbin/   //拷贝新程序
ps ax |grep nginx
kill -USR2 9290
 kill -WINCH 9290     //关闭原worker进程但保留主进程

nginx -v

在这里插入图片描述

4.2版本回退

cd /usr/local/nginx/sbin
[root@vm1 sbin]# \cp -f nginx.old nginx //还原nginx程序
[root@vm1 sbin]# ps ax |grep nginx
[root@vm1 sbin]# kill -HUP 9290      //唤醒原进程
[root@vm1 sbin]# ps  ax |grep nginx
[root@vm1 sbin]# nginx -v  

在这里插入图片描述

5. 算法扩展

vim /usr/local/nginx/conf/nginx.conf
sticky;

写入新模块
在这里插入图片描述nginx并不支持sticky,此时要进行算法扩展
在这里插入图片描述

注释掉文件中的sticky,停掉nginx的服务,安装模块包
在这里插入图片描述
在这里插入图片描述

cd nginx-1.20.1/

make clean							##清理缓存

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
make
make install

重新写入sticky;

\cp -f nginx /usr/local/nginx/sbin/
测试通过,成功写入;
在这里插入图片描述

6.限流

准备工作

在默认发布目录下,建立一个目录
在这里插入图片描述在这里插入图片描述

6.1限制并发连接数

注意:vm1要装httpd

ab -c10 -n 10 http://172.25.73.1/download/vim.jpg	##并发用户数为10

当没有限制并发连接数时,请求全部通过
在这里插入图片描述

在这里插入图片描述
修改配置文件,限制连接;

[root@vm1 download]# vim /usr/local/nginx/conf/nginx.conf
[root@vm1 download]# nginx -s reload
34         limit_conn_zone $binary_remote_addr zone=addr:10m;
40         location /download/ {
41         limit_conn addr 1;
            }

在这里插入图片描述
此时有未通过的请求
在这里插入图片描述

6.2 限制每秒请求数


 35 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
 40         location /download/ {      
 42         limit_req zone=one;

重启nginx,真机测压
在这里插入图片描述
在真机重新执行压力测试,因为每秒只通过一个,则其余9个被拒绝。

在这里插入图片描述

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

因为之前做过每秒只允许通过十个请求的限制,且一次访问只处理5个请求。除了第一个请求不需要排队外,完成所有请求大约要0.9秒左右。

在这里插入图片描述

在这里插入图片描述

6.4无延迟

没有等待时间,第一时间处理请求,剩余的请求会直接请求失败。
在这里插入图片描述
在这里插入图片描述

6.5限制带宽

在这里插入图片描述
该文件大概400多k,需要两秒
在这里插入图片描述

7. nginx配置管理

7.1自动索引

下载方便
在这里插入图片描述
在这里插入图片描述

7.2nginx exprie 缓存配置

缓存可以降低网站带宽,加速用户访问
设置缓存为365天,
在这里插入图片描述查看信息可以看到缓存刚好是一年
在这里插入图片描述

7.3日志轮询

cd /opt/ ##该目录是系统自有的
每天轮询一次,删除之前的日志
在这里插入图片描述
生成了日志文件
在这里插入图片描述

7.4站点目录和文件的限制

禁用不必要的日志记录,以节省磁盘IO的消耗
在这里插入图片描述

在这里插入图片描述禁止所有人访问,只允许主机访问
在这里插入图片描述
当在真机访问status目录时,拒绝访问,报错403,资源不可用,服务器理解客户的请求,但拒绝处理。

在这里插入图片描述主机访问成功
在这里插入图片描述

7.5中文乱码

nginx不支持中文字符的,在html文件中,是文字;在访问浏览器时,中文默认会成为乱码。

在这里插入图片描述设定nginx支持中文编码
在这里插入图片描述
在这里插入图片描述

8.重定向

8.1防止域名恶意解析到服务器ip

vim /usr/local/nginx/conf/nginx.conf
设定在访问本机时,返回500

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

8.2将所有访问重定向至指定域名

在这里插入图片描述

在这里插入图片描述

8.3 端口重定向

在这里插入图片描述

修改配置文件

 36     server {
 37         listen       80;
 38         server_name  www.westos.org;
 39 
 40         rewrite ^(.*) http://www.westos.org/$1 permanent;
 41         charset utf-8;
 

 121     server {
 122         listen       443 ssl;
 123         server_name  www.westos.org;
 124 
 125         ssl_certificate      cert.pem;
 126         ssl_certificate_key  cert.pem;
 127 
 128         ssl_session_cache    shared:SSL:1m;
 129         ssl_session_timeout  5m;
 130 
 131         ssl_ciphers  HIGH:!aNULL:!MD5;
 132         ssl_prefer_server_ciphers  on;
 133 
 134         location / {
 135             root   html;
 136             index  index.html index.htm;
 137         }
 138     }
139 }

在这里插入图片描述
在这里插入图片描述
在浏览器输入192.168.1.1自动 https 访问www.westos.org
在这里插入图片描述

在这里插入图片描述

8.4虚拟主机重定向

www.westos.org 重定向bbs.westos.org
在这里插入图片描述
在这里插入图片描述
bbs.westos.org 重定向www.westos.org

真机里面进行域名的地址解析
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

9.防盗链

盗链主机vm2
防盗主机vm1

配置盗链主机,在发布页中盗取vm1中的vim.jpg图片
在这里插入图片描述
盗取成功 通过vm2可以访问到vm1中的图片
在这里插入图片描述

在vm1的配置文件中 加入防盗链,重新启动nginx
在这里插入图片描述此时通过vm2无法获取vm1中的图片
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值