(一)简单共享图片(输入默认发布目录下的目录下的文件)
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
[root@server1 nginx-1.15.7]# cd objs/
[root@server1 objs]# ls
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx
[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
[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 }
[root@server1 conf]# systemctl start nginx
[root@server1 conf]# systemctl reload nginx
[root@server1 conf]# cd /usr/local/nginx/html/search/
[root@server1 search]# ls
7.在浏览器中输入网址http://172.25.66.1/search/vim.jpg,即默认发布目录下的图片,会发现可以成功显示
(二)复杂共享图片(只输入默认发布目录下的目录)
在上面的共享图片中我们可以得知,在浏览器中查询时必须得输入完整的路径,其中包括图片的名称,可是这样显然是不合理的,我们认为将图片都放置一个目录下,通过查看目录选择图片才是一种不错的方式
1.在浏览器中只输入默认发布目录下的目录时,会发现415报错
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 }
3.再次在浏览器中输入默认发布目录下的目录时,会发现此时可以对目录下的文件进行选择并查看,然后点击vim.jpg图片进行查看
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx
71 location ~ .*\.(jpg|png|css|js)?$ {
72 expires 30d;
73 }
[kiosk@foundation66 Desktop]$ curl -I 172.25.66.1/search/vim.jpg
[kiosk@foundation66 Desktop]$ date
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
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
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/
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 }
[root@server1 conf]# vim /etc/hosts
更改的内容如下:
172.25.66.1 server1 www.westos.org
[root@server1 conf]# cd
[root@server1 ~]# mkdir /web
[root@server1 ~]# cd /web
[root@server1 web]# vim index.html
[root@server1 web]# cat index.html
[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
# 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;
}
}
}
[root@foundation66 ~]# vim /etc/hosts
添加的内容如下:
172.25.66.1 www.westos.org server1
10.测试2:
(一)将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
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
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
5.测试4:在物理机中访问www.westos.org/vim.jpg,可以成功重定向到https://www.westos.org/vim.jpg
[root@foundation66 ~]# curl -I www.westos.org/vim.jpg
将重定向设置为永久重定向
1.在配置文件中进行修改,并将重定向设置为永久重定向
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl reload nginx
rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
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
(二)将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;
}
}
}
[root@server1 conf]# cd
[root@server1 ~]# mkdir /bbs
[root@server1 ~]# cd /bbs
[root@server1 bbs]# vim index.html
[root@server1 bbs]# cat index.html
[root@foundation66 ~]# vim /etc/hosts
文件中的内容如下:
172.25.66.1 www.westos.org server1 bbs.westos.org
4.尝试在浏览器中进行访问bbs.westos.org,发现可以成功访问到发布目录下的内容
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
[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
(三)将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
[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;
}
}
}
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
(一)配置防盗链
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
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;
}
}
}
[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
盗链图片
6.测试:在浏览器中输入网址http://daolian.westos.org/,此时发现图片时是裂开的,说明防盗链成功
(二)如果我们想给客户返回一张图片,而不是裂开的图片,该如何让处理?
1.在/bbs目录下导入一张图片,此图片为给用户返回的图片
[root@server1 bbs]# cd
[root@server1 ~]# cd /bbs
[root@server1 bbs]# ls
[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;
}
}
}
3.在浏览器下重新访问daolian.westos.org,发现此时显示的是新导入的图片
总结:
1.一个连接一个socket
2.默认使用的页面是html,
3.1s接收1个请求,其余的都拒绝,只有设定次参数后才可以,burst=5,
4.请求速率时有限制
5.第一列显示的就是ip地址,时间,方法,协议本本,请求状态(200表示正常),大小。浏览器,服务器版本,日志的参数,
6.请求体,请求头,请求代理,请求头