lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)

文章目录

  • 编译安装nginx
    • 前言
    • 操作步骤
  • nginx并发优化
    • nginx做web服务器
    • nginx反向代理机制
      • nginx负载均衡实验
      • nginx负载均衡实验的补充
  • nginx的平滑升级与回退(热更新热回退)
    • 版本热更新
    • 版本热回退
  • nginx限流
    • 控制单IP并发连接数
    • 设置单位时间内的请求数目
    • 限制带宽(下载速度)
  • nginx其他配置管理
    • 自动索引
    • Nginx expire缓存配置
    • 日志轮询
    • 禁用不必要的日志
    • 访问文件的限制
    • 中文乱码
  • nginx重定向
    • Nginx 禁止IP访问
    • 重定向至域名
    • http(80)重定向https(443)
    • www.lyueyue.org/bbs 重定向bbs.lyueyue.org
    • bbs.lyueyue.org 重定向www.lyueyue.org/bbs
  • 防盗链

编译安装nginx

前言

linux三种软件包安装方式

  • 源码安装
    在企业中,我们往往需要给一些架构中的软件定制功能,这就必须采用源码编译安装软件。安装一个源码包,需要我们自己把源代码编译成二进制的可执行文件。
    源码编译安装三部曲:configure ----> make ---->make install。
    优点:
    (1)修改源代码自定义功能
    (2)定制相关的功能
    缺点:
    (1)编译麻烦
    (2)缺乏自动依赖管理,软件升级麻烦
  • rpm(redhat package manager)包安装
    linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
  • yum安装
    yum工具比rpm工具好用多了,yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。

操作步骤

1.准备阶段
wget http://nginx.org/download/nginx-1.18.0.tar.gz(也可以直接在官网自行下载)
yum install gcc -y 

2.解压文件
tar zxf nginx-1.20.1.tar.gz		解压安装包并进入
cd nginx-1.20.1/
ls

3.configure:检查系统环境是否符合要求
在开始安装服务之前,需要执行configure脚本,它会自动的对当前系统进行
一系列的评估,如源文件、软件依赖库、编译器、汇编器、连接器检查等等
./configure --help
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
选择的模块含义:
--prefix=/usr/local/nginx         		#指定安装路径
--with-http_ssl_module            		#支持https模块
--with-http_stub_status_module    		#监控模块
--with-threads                    		#支持线程池
--with-file-aio                   		#支持AIO文件

4.解决报错
yum install -y pcre-devel
yum install -y openssl-devel
再次configure后出现makefile文件

5.编译
make

4.安装
make install

5.优化编译
正常编译下是6M,重新关闭调试后为1000k
cd /usr/local/nginx/
du -sh
cd ..
rm -fr nginx
cd ~/nginx-1.18.0/
ls
make clean
ls
vim auto/cc/gcc
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install
cd /usr/local/nginx/
du -sh

6.设置环境变量
vim .bash_profile 
添加这一句::/usr/local/nginx/sbin
source .bash_profile 
which nginx

7.启动nginx
nginx -t             			#首先检查语法
nginx                           #如果语法没有问题则启动nginx
netstat -antlp | grep :80
ps -ax | grep nginx

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第1张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第2张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第3张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第4张图片
在这里插入图片描述
安装完pcre包之后再次配置
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第5张图片
又开始报错,安装openssl库。
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第6张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第7张图片
configure成功开始make
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第8张图片
开始make install
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第9张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第10张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第11张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第12张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第13张图片
占用内存变小了
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第14张图片
设置环境变量
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第15张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第16张图片
启动nginx
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第17张图片
可以在浏览器查看
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第18张图片

nginx并发优化

1.nginx作为http服务器时:
max_clients = worker_processes * worker_connections

2.nginx作为反向代理服务器时:
max_clients = worker_processes * worker_connections / 2   
#这里除以2的原因是nginx做反向代理时既连接客户端也连接后台服务器,消耗两倍的连接量。

nginx做web服务器

1.修改nginx配置文件
cd /usr/local/nginx/conf
vim nginx.conf  
nginx -s reload 
ps -ax | grep nginx

2.测试nginx的高并发处理能力
补充:ab( apache bench )是apache下的一个工具,主要用于对web站点做压力测试(若使用需安装httpd-tools工具)
基础用法:  
-c选项为一次发送的请求数,即并发量
-n选项为请求次数
ab -c1 -n 50000 http://192.168.1.10/index.html

-----
开始优化
3.创建nginx用户
useradd -M -d /usr/local/nginx/ -s /sbin/nologin nginx
-M不要自动建立用户的登入目录,-d指定用户家目录 -s指定用户登入后所使用的shell,这里nginx设置为不能登陆的用户
id nginx 

4.修改nginx配置文件
cd /usr/local/nginx/conf
vim nginx.conf
   user  nginx;
	
 	events {
     
	   worker_connections  65535;      #设置工作的连接数
 	}

5.设置用户打开文件的数量限制
sysctl -a | grep file             #查看系统支持打开文件数量限制
vim /etc/security/limits.conf     #设置用户打开文件的数量限制,大于等于上边设置的工作连接数
nginx           -       nofile          65536

6.刷新
nginx -s reload

7.测试
ab -c1 -n 50000 http://192.168.1.10/index.html

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第19张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第20张图片
开始压测
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第21张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第22张图片
开始优化
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第23张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第24张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第25张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第26张图片
实际测试并没有快很多,可能是压测的请求数比较小。
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第27张图片

nginx反向代理机制

nginx反向代理官网

1.修改nginx配置文件
cd /usr/local/nginx/conf
vim nginx.conf
- worker_cpu_affinity 01 10; 	       #1代表内核开启,0代表内核关闭;cpu亲和(绑定)
- multi_accept on; 	                   #告诉nginx收到一个新连接通知后接受尽可能多的连接(默认打开)
- use epoll; 		                   #使用epoll模型,默认就是使用epoll模型
- 开启文件高效传输模式,同时设置tcp_nopush和tcp_nodelay为on,可以防止网路和磁盘IO阻塞。
	sendfile on;
	tcp_nopush on; 
	tcp_nodelay on;	

2.检查语法
nginx -t

3.重启服务
nginx -s reload

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第28张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第29张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第30张图片

nginx负载均衡实验

1.打开server2和server3的apache服务,并写好默认发布文件index.html
yum install -y httpd
systemctl start httpd
echo server2 > /var/www/html/index.html
curl localhost

yum install -y httpd
systemctl start httpd
echo server3 > /var/www/html/index.html
curl localhost

2.修改server1的nginx配置文件
vim nginx.conf
在httpd{
     }里面增加一个server服务和负载均衡器lyueyue,是nginx的反向代理服务,当客户机访问www.lyueyue.org时,nginx通过location转发到负载均衡器 lyueyue上

    upstream lyueyue {
     
    server 192.168.1.11:80
    server 192.168.1.12:80
    }

    server {
     
                listen 80;
                server_name www.lyueyue.org;

                location / {
     
                        proxy_pass http://lyueyue;
                }
           }

3.检查语法并重载
nginx -t
nginx -s reload

4.真机
在server4上作解析

5.测试
curl www.lyueyue.org

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第31张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第32张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第33张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第34张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第35张图片
在server4上测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第36张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第37张图片

nginx负载均衡实验的补充

  • backup: 如果server2和server3都不能访问,那么策略会转向 backup(备用服务)即本机地址。
    lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第38张图片
  • weight权重: 权重越大,承担的访问量越大,默认是1。
    lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第39张图片
    lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第40张图片
  • ip_hash算法: 源地址不变,则后端调度不变,同一个ip过来的请求会发往同一个后端,不会改变。
1.修改nginx配置文件
vim nginx.conf
注意:添加ip_hash时要注释掉backup选项,因为backup不支持ip_hash算法,同时开启会报错。

2.检查配置文件并重载服务
nginx -t
nginx -s reload

3.在server4上测试
for i in {
     1..6};do curl www.lyueyue.org;done

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第41张图片
在这里插入图片描述
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第42张图片

  • sticky cookie 算法(针对浏览器访问的优化):
  • 为什么需要此算法?client —> cdn —> server cdn是反向代理,如果使用ip_hash算法,nginx所拿到的客户端的ip都是一个,是cdn的地址。
    Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route。
  • 流程如下:
    (1)客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
    (2)后端服务器处理完请求,将响应数据返回给nginx。
    (3)此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值。
    (4)客户端接收请求,并保存带route的cookie。
    (5)当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。
1.解压软件
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip
unzip 08a395c66e42.zip
cd nginx-1.18.0/
make clean 

2.重新编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
make
cd objs/
nginx -s stop
cp nginx /usr/local/nginx/sbin/ -f 
nginx -v
nginx

3.修改配置文件
cd /usr/local/nginx/conf
vim nginx.conf
21     sticky;

4.检查配置文件并重载
nginx -t
nginx -s reload

5.测试
curl www.lyueyue.org

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第43张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第44张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第45张图片
重启nginx
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第46张图片
修改配置文件
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第47张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第48张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第49张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第50张图片

nginx的平滑升级与回退(热更新热回退)

版本热更新

1.下载nginx新版本,正常执行./configure和make但不要执行make install
cd nginx-1.19.5/
vim auto/cc/gcc                        #关闭debug功能
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
make

2.备份源程序
cd /usr/local/nginx/sbin
cp nginx nginx.old

3.拷贝新程序
cd nginx-1.19.5/objs
cp -f nginx /usr/local/nginx/sbin

4.获取当前nginx主进程pid
ps ax | grep nginx

5.升级新程序
kill -USR2 119387            
ps ax | grep nginx
#kill -USR2 旧版程序的主进程号或进程文件名 
#此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版 Nginx。新旧Nginx会同时运行,共同处理请求

6.查看当前版本
nginx -v

7.关闭原worker进程但保留主进程:为了可以回退
kill -WINCH 119387
ps ax | grep nginx
#kill -WINCH 旧版主进程号
#新版的Nginx的工作进程会逐渐取代旧版工作进程。

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第51张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第52张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第53张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第54张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第55张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第56张图片

版本热回退

1.还原nginx程序
cd /usr/local/nginx/sbin
cp nginx.old  nginx

2.唤醒原进程
kill -HUP 119387                  #不重载配置启动进程
ps ax | grep nginx

3.回收新版本的worker进程
kill -WINCH 125256   
ps ax | grep nginx

4.关闭新版本主进程
kill -QUIT 125256                 #从容关闭进程
ps ax | grep nginx

5.查看版本
nginx -v

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第57张图片
版本回退成功
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第58张图片

nginx限流

官方参考手册

控制单IP并发连接数

1.检查nginx服务启动
ps ax | grep nginx

2.创建download发布目录,并放几张图进去
cd /usr/local/nginx/html/
mkdir download
cd download
chmod 777 *
ll

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

4.重启nginx
nginx -t
nginx -s reload

5.测试
ab -c10 -n10 http://192.168.1.10/download/yueyue.jpg
ab -c1 -n10 http://192.168.1.10/download/yueyue.jpg

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第59张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第60张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第61张图片

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第62张图片
重启nginx
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第63张图片
开始测试
先在浏览器上访问

使用curl测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第64张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第65张图片

设置单位时间内的请求数目

1.修改nginx配置文件
#rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次
#limit_req zone=one;                  #限制请求数目为1
#limit_req zone=one burst=5           #5个人排队
vim nginx.conf
	limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
            limit_req zone=one burst=5;	

2.重启nginx
nginx -t
nginx -s reload

3.测试
ab -c1 -n 10 http://192.168.1.10/download/dog.gif

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第66张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第67张图片
在这里插入图片描述

限制带宽(下载速度)

1.查看请求的文件大小
du -sh yueyue.jpg

2.修改nginx配置文件
limit_rate 50k;			             #限制带宽,其实前面已经用过了。

3.重启nginx
nginx -t
nginx -s reload

4.测试
ab -c1 -n 5 http://192.168.1.10/download/yueyue.jpg

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第68张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第69张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第70张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第71张图片

nginx其他配置管理

自动索引

自动索引:方便查询
vim nginx.conf
	location / {
     
	    autoindex on;
	}

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第72张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第73张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第74张图片

Nginx expire缓存配置

Nginx expire缓存配置: 缓存可以降低网站带宽,加速用户访问
vim nginx.conf
	location ~ .*\.(gif|jpg|png)$ {
     
	    expires 365d;
	    root /html;
	}

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第75张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第76张图片
curl -I 查看header头信息
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第77张图片

日志轮询

1.编写文件
cd /usr/local/nginx/logs
vim /opt/nginxlog.sh 
#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`   #重启
	
2.再加入crontab定时任务
crontab -e
crontab -l
00 00 * * * /opt/nginxlog.sh &> /dev/null
为了安全,日志目录不需要给你nginx用户访问权限
chmod -R 700 /usr/local/nginx/logs

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第78张图片
定时执行
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第79张图片

禁用不必要的日志

禁用不必要的日志记录,以节省磁盘IO的消耗
示例一:
	location ~ .*\.(js|jpg|jpeg|png|css|bmp|gif)$ {
     
		access_log off;
	}
示例二:
        location /status {
     
            access_log off;           #关闭日志
            stub_status on;
            allow 127.0.0.1;
            deny all;
        }

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第80张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第81张图片
使用本机正常访问
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第82张图片
使用server4访问被拒绝
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第83张图片

访问文件的限制

这部分结合上面的截图理解

对站点目录和文件的限制
示例一:
	location ~ ^/images/.*\.(sh|php)$ {
     
	                deny all;
	        }
示例二:
        location /status {
     
            access_log off;
            stub_status on;
            allow 127.0.0.1;          #只允许本机访问
            deny all;
        }

中文乱码

中文乱码
	charset utf-8;

实验前准备:首先拷贝一份中文文档到发布目录下
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第84张图片
在server4上访问发现乱码
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第85张图片
重新修改配置文件
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第86张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第87张图片
再次测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第88张图片

nginx重定向

Nginx 禁止IP访问

我们在使用过程中会遇到很多的恶意IP攻击,这个时候就要用到 Nginx 禁止IP访问了。

1.编写文件
vim nginx.conf
禁止通过IP直接访问网站 返回500错误

2.重启服务
nginx -s reload

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第89张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第90张图片
使用ip访问报错,使用域名正常访问。
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第91张图片

重定向至域名

访问的是ip地址,但是自动重定向到域名。

重定向:
vim nginx.conf
	server {
      
	listen 80; 
	server_name _; 
	rewrite ^(.*) http://www.lyueyue.org permanent; 
	} 

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第92张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第93张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第94张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第95张图片

http(80)重定向https(443)

80重定向443:
1.创建密钥和证书
cd /etc/pki/tls/certs
ls
vim Makefile   #Makefile中有生成密钥的方式,所以要到这个目录下生成
make cert.pem
mv cert.pem /usr/local/nginx/conf        #将认证文件移到对应的目录

2.修改配置文件
vim nginx.conf
	server {
     
		listen 80;
		server_name www.lyueyue.org;
		rewrite ^/(.*)$ https://www.lyueyue.org/$1 permanent;
	}
修改https对应的部分

3.重启nginx
nginx -t
nginx -s reload

4.测试
netstat -antlp             #查看443端口是否打开

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第96张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第97张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第98张图片
修改配置文件
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第99张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第100张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第101张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第102张图片
上面已经完成了https加密访问,但还需要手动输入https,下面打开http转https,用户直接通过https加密访问服务器。
$1代表匹配所有 / 字符
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第103张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第104张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第105张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第106张图片

www.lyueyue.org/bbs 重定向bbs.lyueyue.org

1.建立默认发布目录
mkdir /bbs
echo bbs.lyueyue.org > /bbs/index.html

2.修改配置文件
vim nginx.conf
www.lyueyue.org/bbs 重定向bbs.lyueyue.org:
        server_name www.lyueyue.org;
        rewrite ^/bbs$ http://bbs.lyueyue.org permanent;
        rewrite ^/bbs/(.*)$ http://bbs.lyueyue.org/$1 permanent;

    server {
     
        listen 80;
        server_name bbs.lyueyue.org;
        location / {
     
            root /bbs;
            index index.html;
        }
    }

3.重启nginx
nginx -t
nginx -s reload

4.测试
curl -I www.lyueyue.org/bbs
curl -I www.lyueyue.org/bbs/index.html
curl http://bbs.lyueyue.org/index.html       #这一步需要做host解析

建立默认发布目录
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第107张图片
定义一个虚拟主机服务,访问域名是bbs.lyueyue.org ,默认发布目录是/bbs。
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第108张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第109张图片
测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第110张图片

bbs.lyueyue.org 重定向www.lyueyue.org/bbs

1.建立默认发布目录
mkdir /www
echo www.lyueyue.org > /www/index.html
cd /www
mkdir bbs
cd bbs
echo bbs.lyueyue.org-2 > index.html

2.修改配置文件
vim nginx.conf
bbs.lyueyue.org 重定向www.lyueyue.org/bbs:
        if ($host = "bbs.lyueyue.org"){
     
            rewrite ^/(.*)$ http://www.lyueyue.org/bbs/$1 permanent;
	}

3.重启nginx
nginx -t
nginx -s reload

4.测试
curl -I bbs.lyueyue.org

建立默认发布目录
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第111张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第112张图片
修改配置文件
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第113张图片
重启
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第114张图片
测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第115张图片
在浏览器中访问
输入bbs.lyueyue.org重定向到www.lyueyue.org/bbs
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第116张图片

防盗链

1.修改配置文件
vim nginx.conf
当访问bbs.lyueyue.org时,指向默认目录。

2.重启nginx
nginx -t
nginx -s reload

3.配置server2上的http服务
当访问server2上的http发布文件时,盗链server1(nginx服务)的内容
cd /var/www/html
vim daolian.html
<img src="http://www.lyueyue.org/download/yueyue.jpg"/>
systemctl restart httpd

4.测试
在server4上测试 盗链成功

5.设置防盗链
vim nginx.conf
        location ~ \.(jpg|png)$ {
     
            valid_referers none blocked www.lyueyue.org;
            if ($invalid_referer) {
     
                return 403;
                #rewrite ^/           #或者直接重定向到别的服务器 http://www2.lyueyue.org/daolian.jpg;
            }
        }

6.重启nginx
nginx -t
nginx -s reload

7.测试
访问图片失败

8.也可以打开重定向,转到其他服务器
这里就不演示了

lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第117张图片
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第118张图片
配置server2上的http服务
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第119张图片
测试成功
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第120张图片
设置防盗链
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第121张图片
重启
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第122张图片
测试
lnmp 四之nginx(web服务器,反向代理,负载均衡以及其他配置管理)_第123张图片

你可能感兴趣的:(linux企业学习,linux,运维)