Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)

七.图片共享

(一)简单共享图片(输入默认发布目录下的目录下的文件)
1.将之前的nginx关掉,并重新编译(因为需要增加新的模块)

[root@server1 ~]# systemctl stop nginx
[root@server1 ~]# ls
[root@server1 ~]# cd nginx-1.15.7
[root@server1 nginx-1.15.7]# make clean #重新编译之前要删除Makefile objs文件
[root@server1 nginx-1.15.7]# yum install -y /root/gd-devel-2.0.35-26.el7.x86_64.rpm 
#添加图形动态模块
[root@server1 nginx-1.15.7]# ./configure --prefix=/usr/local/nginx --with-http_realip_module  --with-http_image_filter_module=dynamic 
[root@server1 nginx-1.15.7]# make

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第1张图片
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第2张图片
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第3张图片
2.将新的二进制文件替换成之前的二进制文件

[root@server1 nginx-1.15.7]# cd objs/
[root@server1 objs]# ls
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第4张图片
3.创建新的目录,并将图像模块放在目录下

[root@server1 objs]# mkdir /usr/local/nginx/modules
[root@server1 objs]# ls
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第5张图片
4.编写nginx配置文件

[root@server1 objs]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf

在这里插入图片描述
配置文件的内容如下:

  1 load_module modules/ngx_http_image_filter_module.so;
 53         location /search/ {
 54         image_filter resize 100 200;	#100表示宽,200表示高
 55           # limit_conn addr 1;
 56            #limit_rate 50k;
 57            #limit_req zone=one burst=5; 
 58         }

在这里插入图片描述
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第6张图片
5. 开启nginx,并使nginx服务重启

[root@server1 conf]# systemctl start nginx
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
6.查看默认发布目录下的search目录下有图片

[root@server1 conf]# cd  /usr/local/nginx/html/search/
[root@server1 search]# ls

在这里插入图片描述
7.在浏览器中输入网址http://172.25.66.1/search/vim.jpg,即默认发布目录下的图片,会发现可以成功显示
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第7张图片
(二)复杂共享图片(只输入默认发布目录下的目录)
在上面的共享图片中我们可以得知,在浏览器中查询时必须得输入完整的路径,其中包括图片的名称,可是这样显然是不合理的,我们认为将图片都放置一个目录下,通过查看目录选择图片才是一种不错的方式
1.在浏览器中只输入默认发布目录下的目录时,会发现415报错
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第8张图片
2.修改nginx配置文件并重启服务

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件下的内容如下:

 53         location /search/ {
 54         #image_filter resize 100 200;
 55         autoindex on;
 56           # limit_conn addr 1;
 57            #limit_rate 50k;
 58            #limit_req zone=one burst=5; 
 59         }

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第9张图片
3.再次在浏览器中输入默认发布目录下的目录时,会发现此时可以对目录下的文件进行选择并查看,然后点击vim.jpg图片进行查看
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第10张图片

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第11张图片(三)设置图片的到期时间
1.编辑nginx配置文件

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

 71         location ~ .*\.(jpg|png|css|js)?$ {
 72             expires 30d;
 73         }

在这里插入图片描述
2.在物理机中访问server1中的图片,会显示到期时间

[kiosk@foundation66 Desktop]$ curl -I 172.25.66.1/search/vim.jpg
[kiosk@foundation66 Desktop]$ date

在这里插入图片描述

八.实现https加密

1.关闭nginx服务,并重新编译(主要是为了添加ssl模块)

[root@server1 conf]# systemctl stop nginx
[root@server1 conf]# cd 
[root@server1 ~]# cd nginx-1.15.7
[root@server1 nginx-1.15.7]# make clean
rm -rf Makefile objs
[root@server1 nginx-1.15.7]# yum install openssl-devel -y
[root@server1 nginx-1.15.7]#  ./configure --prefix=/usr/local/nginx --with-http_realip_module  --with-http_image_filter_module=dynamic --with-http_ssl_module
[root@server1 nginx-1.15.7]# make

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第12张图片
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第13张图片
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第14张图片
2.替代之前的二进制文件并再次将图像模块放入modules目录下

[root@server1 nginx-1.15.7]# cd objs/
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx
[root@server1 objs]# ls
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第15张图片
3.在/etc/pki/tls/certs/下生成证书并将钥匙和锁都放到nginx的配置文件的目录下

[root@server1 objs]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第16张图片
在证书中写入的内容范例如下:

Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shannxi       
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:[email protected]

4.编写配置文件并开启重新加载nginx服务

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl start nginx
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
在这里插入图片描述
配置文件的内容如下(重新创建一个虚拟机):

129 server {
130         listen 80;
131         server_name www.westos.org;
132         location / {
133                 root /web;
134                 index index.html;
135         }
136   }
137 }

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第17张图片
5.更给server1中的域名解析

[root@server1 conf]# vim /etc/hosts

在这里插入图片描述
更改的内容如下:

172.25.66.1 server1 www.westos.org

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第18张图片
6.创建/web,并编写测试页

[root@server1 conf]# cd
[root@server1 ~]# mkdir /web
[root@server1 ~]# cd /web
[root@server1 web]# vim index.html
[root@server1 web]# cat index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第19张图片
7.测试1:在server1中尝试访问,查看设置是否成功

[root@server1 web]# curl www.westos.org

在这里插入图片描述
8.再次编写nginx配置文件,然后检测其是否有语法错误并重启服务,使其可以实现http->https

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# cd ../sbin
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# systemctl reload nginx

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第20张图片
配置文件中的内容如下:

    # HTTPS server
    #   
    server {
        listen       443 ssl;
        server_name  www.westos.org;

        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;
        }   
    }   

server {
        listen 80; 
        server_name www.westos.org;
        rewrite ^/(.*)$ https://www.westos.org/;

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

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第21张图片
9.在真机中添加域名解析

[root@foundation66 ~]# vim /etc/hosts

添加的内容如下:

172.25.66.1 www.westos.org server1

在这里插入图片描述
10.测试2:

  • 在浏览中输入www.westos.org后会自动补齐https:并显示添加证书。
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第22张图片
  • 添加即可
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第23张图片
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第24张图片
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第25张图片
  • 添加后,再次输入www.westos.org便会自动跳入www.westos.org,不需要添加证书
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第26张图片
  • 如果不想要此证书或想要看最先开始的界面,可以删除证书,依次点击Preferences->Advanced->Certificates->View Certificates->servers
    在这里插入图片描述
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第27张图片
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第28张图片
    Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第29张图片

九.重定向

(一)将www.westos.org重定向到https://www.westos.org(上述实验已经完成,这里进行扩充)
重定向到具体的文件
1.测试1:在物理机中访问www.westos.org,显示的HTTP状态码是302(302表示暂时重定向,301表示永久重定向),且可以成功重定向到https://www.westos.org

[root@foundation66 ~]# curl -I www.westos.org

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第30张图片
2.测试2:在物理机中访问www.westos.org/vim.jpg,发现其不可以成功重定向到https://www.westos.org/vim.jpg,只是可以重定向到https://www.westos.org

[root@foundation66 ~]# curl -I www.westos.org/vim.jpg

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第31张图片
3.在配置文件中进行修改,将www.westos.org重定向到https://www.westos.org

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

#$1表示后面可以跟文件,否则会报错
132         rewrite ^/(.*)$ https://www.westos.org/$1;

在这里插入图片描述
4.测试3:在物理机中访问www.westos.org,可以成功重定向到https://www.westos.org

[root@foundation66 ~]# curl -I www.westos.org

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第32张图片
5.测试4:在物理机中访问www.westos.org/vim.jpg,可以成功重定向到https://www.westos.org/vim.jpg

[root@foundation66 ~]# curl -I www.westos.org/vim.jpg

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第33张图片
将重定向设置为永久重定向
1.在配置文件中进行修改,并将重定向设置为永久重定向

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

rewrite ^/(.*)$ https://www.westos.org/$1 permanent;

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第34张图片
2.测试:在物理机中访问www.westos.org以及www.westos.org/vim.jpg,发现其HTTP状态码显示的是301,即永久重定向

[root@foundation66 ~]# curl -I www.westos.org
[root@foundation66 ~]# curl -I www.westos.org/vim.jpg

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第35张图片
(二)将www.westos.org/bbs/index.html重定向到http://bbs.westos.org/index.html
1.编辑nginx配置文件

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

server {
        listen 80; 
        server_name bbs.westos.org;

        location / { 
                root /bbs;
                index index.html;
        }   
  }
}

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第36张图片
2.创建/bbs目录,并编写测试页

[root@server1 conf]# cd
[root@server1 ~]# mkdir /bbs
[root@server1 ~]# cd /bbs
[root@server1 bbs]# vim index.html
[root@server1 bbs]# cat index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第37张图片
3.在物理机中添加域名解析

[root@foundation66 ~]# vim /etc/hosts

在这里插入图片描述
文件中的内容如下:

172.25.66.1 www.westos.org server1 bbs.westos.org

在这里插入图片描述
4.尝试在浏览器中进行访问bbs.westos.org,发现可以成功访问到发布目录下的内容
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第38张图片
5.修改nginx配置文件并重启nginx服务

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

133         rewrite ^/(.*)bbs$ http://bbs.westos.org permanent;

在这里插入图片描述
6.测试1:在物理机中进行测试,但是会发现在网址后添加测试页,就会出现404报错

 [root@foundation66 ~]# curl -I www.westos.org/bbs
 [root@foundation66~]# curl -I www.westos.org/bbs/index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第39张图片
7.修改nginx配置文件并重启nginx服务

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

133        rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;

在这里插入图片描述
8.测试2:再次在物理机中进行测试,会发现此时在网址后添加测试页可以成功

[root@foundation66 ~]# curl -I www.westos.org/bbs/index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第40张图片
(三)将bbs.westos.org重定向到http://www.westos.org/bbs下
1.将bbs这个目录放到/web目录下

[root@server1 conf]# cd
[root@server1 ~]# cd /web
[root@server1 web]# cp -r /bbs /web/
[root@server1 web]# ls

在这里插入图片描述
2.修改nginx配置文件并重启nginx服务

[root@server1 web]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx

在这里插入图片描述
配置文件中的内容如下:

server {
        listen 80;
        server_name www.westos.org bbs.westos.org;
#       rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
#       rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;
        if ($host = "bbs.westos.org"){
                rewrite ^/(.*)$ http://www.westos.org/bbs/$1 permanent;
        }
        location / {
                root /web;
                index index.html;
        }
   }
}

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第41张图片
3.测试:在物理机中进行测试,发现访问bbs.westos.irg时可以重定向到http://www.westos.org/bbs/index.html

[root@foundation66 ~]# curl -I bbs.westos.org
[root@foundation66 ~]# curl -I bbs.westos.org/index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第42张图片

十.防盗链

(一)配置防盗链
1.新创建一个虚拟机server2,并在其上编译并安装nginx

[root@server2 ~]# tar -zxf nginx-1.15.7.tar.gz 
[root@server2 ~]# ls
[root@server2 ~]# cd nginx-1.15.7
[root@server2 nginx-1.15.7]# vim auto/cc/gcc
[root@server2 nginx-1.15.7]# yum install pcre-devel zlib-devel gcc -y
[root@server2 nginx-1.15.7]# ./configure --prefix=/usr/local/nginx --with-file-aio
[root@server2 nginx-1.15.7]# make
[root@server2 nginx-1.15.7]# make install

2.在物理机中添加域名解析

[root@foundation66 ~]# vim /etc/hosts

在这里插入图片描述
增加的内容如下:

172.25.66.2 daolian.westos.org

在这里插入图片描述
3.在server2中编辑nginx配置文件并查看配置文件中的内容是否报错,如果没有报错则开启nginx服务

[root@server2 ~]# cd /usr/local/nginx/conf/
[root@server2 conf]# vim nginx.conf
[root@server2 conf]# cd ../sbin
[root@server2 sbin]# ./nginx -t
[root@server2 sbin]# ./nginx

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第43张图片
配置文件中的内容如下:

    server {
        listen       80;
        server_name  _;
        rewrite ^(.*) http://www.westos.org;
…………
server {
        listen 80;
        server_name daolian.westos.org;
        charset utf-8;
        location / {
                root /web;
                index index.html;
        }
}
}

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第44张图片
在这里插入图片描述
4.在server2中添加域名解析

[root@server2 sbin]# vim /etc/hosts

在这里插入图片描述
添加的内容如下:

172.25.66.2 server2 daolian.westos.org

在这里插入图片描述
5.在server2中创建/web目录并编写测试页

[root@server2 sbin]# cd
[root@server2 ~]# mkdir /web
[root@server2 ~]# cd /web
[root@server2 web]# vim index.html
[root@server2 web]# cat index.html

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第45张图片
测试页下的内容如下:




盗链图片

6.测试:在浏览器中输入网址http://daolian.westos.org/,此时发现图片时是裂开的,说明防盗链成功
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第46张图片
(二)如果我们想给客户返回一张图片,而不是裂开的图片,该如何让处理?
1.在/bbs目录下导入一张图片,此图片为给用户返回的图片

[root@server1 bbs]# cd
[root@server1 ~]# cd /bbs
[root@server1 bbs]# ls

在这里插入图片描述
2.重新编辑nginx配置文件并重启nginx服务

[root@server1 bbs]# vim /usr/local/nginx/conf/nginx.conf
[root@server1 bbs]# systemctl reload nginx

在这里插入图片描述
配置文件的内容如下:

server {
        listen 80;
        server_name www.westos.org;
#       rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
#       rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;
#       if ($host = "bbs.westos.org"){
#               rewrite ^/(.*)$ http://http.westos.org/bbs/$1;
#       }
        location / {
                root /web;
                index index.html;
        }
        location ~* \.(gif|jpg|png|jpeg)$ {
                root /web;
                valid_referers none blocked www.westos.org;
                if ($invalid_referer) {
                        rewrite ^/ http://bbs.westos.org/daolian.png;
                }
        }
   }

Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第47张图片
3.在浏览器下重新访问daolian.westos.org,发现此时显示的是新导入的图片
Nginx讲解(四)Nginx文件配置(图片共享,实现https加密,重定向,防盗链)_第48张图片

总结:
1.一个连接一个socket
2.默认使用的页面是html,
3.1s接收1个请求,其余的都拒绝,只有设定次参数后才可以,burst=5,
4.请求速率时有限制
5.第一列显示的就是ip地址,时间,方法,协议本本,请求状态(200表示正常),大小。浏览器,服务器版本,日志的参数,
6.请求体,请求头,请求代理,请求头

你可能感兴趣的:(项目)