Nginx的功能配置整合

环境:
2台虚拟机:
server1:172.25.70.1
server2:172.25.70.2
物理机:
172.25.70.250

一、压缩网页内容

1.制作一个比较大的默认发布页网页
cp /etc/passwd .
mv passwd index.html
vim index.html

在这里插入图片描述

2.修改Nginx配置文件,使其可以压缩网页
vim /usr/local/nginx/conf/nginx.conf
======================================

 33     gzip  on;
 34     gzip_min_length 1; 
 35     gzip_comp_level 2;
 36     gzip_types text/plain application/x-javascript text/css application/xml     text/javascript application/x-httpd/php image/jpeg image/gif image/png;

在这里插入图片描述

3.重新加载配置文件内容
./nginx -s reload

在这里插入图片描述
网页访问172.25.70.1,F12查看
在这里插入图片描述
在这里插入图片描述

4.将刚才的修改注释,再次重新加载配置文件内容
./nginx -s reload

在这里插入图片描述
网页访问172.25.13.1,F12查看
在这里插入图片描述

二、制作Nginx的systemd服务快捷方式

1.下载安装httpd
yum install -y httpd
2.复制httpd的systemd服务快捷方式文件,并为Nginx重写
cd /usr/lib/systemd/system/
cp httpd.service /etc/systemd/system/nginx.service
vim nginx.service
====================================================
[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
3.测试
systemctl start nginx.service
systemctl status nginx.service

systemctl stop nginx.service
systemctl status nginx.service

在这里插入图片描述

在这里插入图片描述

三、限制客户端网页访问速度

1.修改Nginx的配置文件
cd /usr/local/nginx/
vim conf/nginx.conf
=====================================================================
 37         limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

 52         location /search/ {
 53                 limit_req zone=one burst=5;
 54         }

在这里插入图片描述

2.新建目录
mkdir html/search

在这里插入图片描述

3.重新加载Nginx配置文件内容
systemctl reload nginx.service
4.测试

浏览器输入:http://172.25.70.1/search/vim.jpg
在这里插入图片描述
压力测试:

ab -c 1 -n 10 http://172.25.70.1/search/vim.jpg

在这里插入图片描述

vim conf/nginx.conf
===================
 52         location /search/ {
 53                 limit_rate 50k;
 54                 limit_req zone=one burst=5;
 55         }

在这里插入图片描述
重新加载配置文件

systemctl reload nginx.service

再次测试

ab -c 1 -n 10 http://172.25.70.1/search/vim.jpg

在这里插入图片描述

四、Nginx的模块使用:realip、image_filter、http_ssl

1.解决依赖性
yum install -y openssl-devel
yum install -y gd-devel-2.0.35-26.el7.x86_64.rpm
2.编译模块
./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module --with-http_image_filter_module --with-http_ssl_module
=======================================================================================================================================
make

在这里插入图片描述

3.查看编译好的Nginx版本
[root@server1 nginx-1.15.9]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
[root@server1 nginx-1.15.9]# cd objs/
[root@server1 objs]# ./nginx -V
nginx version: nginx/1.15.9
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) 
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module --with-http_image_filter_module --with-http_ssl_module

在这里插入图片描述

4.替换二进制执行文件
[root@server1 objs]# cp -f nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 objs]# 

在这里插入图片描述

5.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
===============================
127 server {
128         listen 80;
129         server_name server1.example.org;
130         set_real_ip_from 172.25.13.1;
131         real_ip_header X-Forward-For;
132         real_ip_recursive on;
133         location / {
134                 return 200 "client real ip: $remote_addr\n" 
135         }
136 }
image_filter
1修改配置文件
vim /usr/local/nginx/conf/nginx.conf

 53         location /search/ {
 54                 #limit_rate 50k;
 55                 limit_req zone=one burst=5;
 56                 image_filter resize 150 100;
 57         }

在这里插入图片描述

2.测试

浏览器访问:http://172.25.70.1/search/vim.jpg

在这里插入图片描述

ssl加密
1.修改配置文件
vim /usr/local/nginx/conf/nginx.conf
======================================
110     server {
111         listen       443 ssl;
112         server_name  www.westos.org;
113 
114         ssl_certificate      cert.pem;
115         ssl_certificate_key  cert.pem;
116 
117         ssl_session_cache    shared:SSL:1m;
118         ssl_session_timeout  5m;
119 
120         ssl_ciphers  HIGH:!aNULL:!MD5;
121         ssl_prefer_server_ciphers  on;
122 
123         location / {
124             root   /web;
125             index  index.html index.htm;
126         }
127     }

在这里插入图片描述

2.建立/web目录,编写网页发布文件
[root@server1 conf]# mkdir /web
[root@server1 conf]# vim /web/index.html

在这里插入图片描述

3.生成证书
[root@server1 conf]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
cat $PEM1 >  cert.pem ; \
echo ""    >> cert.pem ; \
cat $PEM2 >> cert.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
.+++
....................................+++
writing new private key to '/tmp/openssl.GT9GkG'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:linux
Organizational Unit Name (eg, section) []:westis
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:root@westos.org
[root@server1 certs]# ls
ca-bundle.crt        cert.pem         Makefile
ca-bundle.trust.crt  make-dummy-cert  renew-dummy-cert

在这里插入图片描述

4.将证书复制到nginx配置文件目录,重启nginx服务
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
[root@server1 certs]# systemctl reload nginx.service
5.测试

浏览器输入:https://172.25.70.1/

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

在这里插入图片描述

realip

环境准备:准备server2:安装nginx用来作负载均衡

#安装必要依赖
[root@server2 ~]# yum install -y gd-devel-2.0.35-26.el7.x86_64.rpm openssl-devel pcre-devel gc
#配置模块
[root@server2 nginx-1.15.9]# ./configure --prefix=/usr/local/nginx  --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
#编译安装
[root@server2 nginx-1.15.9]# make && make install
#制作软链接
[root@server2 nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#建立nginx用户
[root@server2 nginx-1.15.9]# useradd nginx
[root@server2 nginx-1.15.9]# id nginx
uid=1000(nginx) gid=1000(nginx) groups=1000(nginx)

为server2快速配置环境变量

[root@server1 nginx]# cd /etc/systemd/system/
[root@server1 system]# ls | grep nginx
nginx.service
[root@server1 system]# scp nginx.service server2:/etc/systemd/system/
root@server2's password: 
nginx.service                                 100%  251     0.3KB/s   00:00    
[root@server1 system]# 
1.修改作为web服务器(server1)的nginx配置文件
 41     server {
 42         listen       80;
 43         server_name  localhost;
 44          set_real_ip_from 172.25.70.2;
 45          real_ip_header X-Forwarded-For;
 46          real_ip_recursive on; 

在这里插入图片描述
重新加载配置文件:

[root@server1 nginx]# systemctl reload nginx.service
2.修改用来做反代的nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
===========================================
修改:

  2 user  nginx nginx;
  3 worker_processes  auto;
=================================
 17 http {
 18     include       mime.types;
 19     default_type  application/octet-stream;
 20         upstream westos {
 21                 server 172.25.70.1:80;
 22 }
======================================================
 98     server {					#添加虚拟主机
 99             listen 80;
100             server_name www.westos.org;
101 
102             location / {
103                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
104                     proxy_pass http://westos;
105             }
106     }

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

3.测试

在客户端写入解析,curl www.westos.org在server1访问日志中查看会发现访问的是代理服务器,但获得的内容是server1
在这里插入图片描述

[root@vits Desktop]# curl www.westos.org

在这里插入图片描述
在server1的nginx的日志里看到访问信息:
在这里插入图片描述
把web服务器的配置文件还原:
在这里插入图片描述
重新加载配置后,再用客户端访问,查看日志:
在这里插入图片描述
日志会显示是由反向代理服务器GET访问

五、日志记录——对客户端访问本地资源进行监控

 21     log_format  main  '$remote_addr - $remote_user [$time_local] "$request"     '                 
 22                       '$status $body_bytes_sent "$http_referer" '
 23                       '"$http_user_agent" "$http_x_forwarded_for"';
 24 
 46         access_log logs/redhat.access.log main;

在这里插入图片描述

在这里插入图片描述
重启Nginx服务

[root@server1 conf]# vim nginx.conf
[root@server1 conf]# systemctl restart nginx.service 

客户端访问服务器指定页面

[root@vits ~]# ab -c 1 -n 5 http://172.25.70.1/search/vim.jpg

查看服务器日志文件内容
在这里插入图片描述

六、重定向

在我们配置的web服务器(server1)上:

1.临时重定向
[root@server1 conf]# vim ../conf/nginx.conf
===============================================
112     server {
113         listen       443 ssl;
114         server_name  localhost;
115 
116         ssl_certificate      cert.pem;
117         ssl_certificate_key  cert.pem;
118 
119         ssl_session_cache    shared:SSL:1m;
120         ssl_session_timeout  5m;
121 
122         ssl_ciphers  HIGH:!aNULL:!MD5;
123         ssl_prefer_server_ciphers  on;
124 
125         location / {
126             root   /web;
127             index  index.html index.htm;
128         }
129     }
130     server {
131         listen 80;
132         server_name www.westos.com;
133 
134         rewrite ^/(.*) https://www.westos.com/$1;
135     }

在这里插入图片描述
重新加载配置文件:

[root@server1 nginx]# systemctl reload nginx.service

客户端测试:

要保证客户端有www.westos.com的本地解析

[root@vits Desktop]# curl -I www.westos.org
[root@vits Desktop]# cat /etc/hosts
[root@vits Desktop]# curl -I www.westos.org/index.html

在这里插入图片描述
在这里插入图片描述
上面的配置可以实现将 www.westos.com 重定向到 https://www.westos.com

我们还可以在配置文件中加入一个虚拟主机,完成一台服务器部署两个web服务,对应一个IP地址,在实际生产环境中可以节约资源。

更改配置文件:

[root@server1 conf]# vim nginx.conf
========================================
131          server {
132                  listen 80;
133                 server_name www.westos.com;
134                 rewrite ^/(.*) https://www.westos.com/$1;
135                  # set_real_ip_from 172.25.70.1;
136                  # real_ip_header X-Forward-For;
137                  # real_ip_recursive on;
138                  # location / {
139                  #         return 200 "client real ip: $remote_addr\n" ;
140                  # }
141         }
142         server {
143                 listen 80;
144                 server_name bbs.westos.com;
145 
146                 location / {
147                         root /bbs;
148                         index index.html;
149                 }
150         }

在这里插入图片描述

[root@server1 nginx]# mkdir /bbs
[root@server1 nginx]# vim /bbs/index.html
[root@server1 nginx]# cat /bbs/index.html
bbs.westos.com
[root@server1 nginx]# systemctl reload nginx.service 
[root@server1 nginx]# 

添加本地解析:

[root@vits Desktop]# vim /etc/hosts

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

[root@vits Desktop]# curl -I www.westos.com
[root@vits Desktop]# curl bbs.westos.com

在这里插入图片描述

2.永久重定向

修改配置文件:

[root@server1 conf]# vim nginx.conf
=========================================
130     server {
131         listen 80;
132         server_name www.westos.com;
133 
134         rewrite ^/(.*) https://www.westos.com/$1 permanent;
135 
136     }
137 
138     server {
139         listen 80;
140         server_name bbs.westos.com;
141 
142         location / {
143                 root    /bbs;
144                 index   index.html;
145         }
146     }

在这里插入图片描述
重载配置文件

[root@server1 nginx]# systemctl reload nginx.service 

客户端测试:

[root@vits Desktop]# curl -I www.westos.com

在这里插入图片描述
成功实现永久重定向。

3.设置不同域名的重定向
[root@server1 conf]# vim nginx.conf
====================================
131          server {
132                  listen 80;
133                 server_name www.westos.com #bbs.westos.com;
134                 #rewrite ^/(.*) https://www.westos.com/$1 permanent;
135                 rewrite ^/bbs$ http://www.westos.com permanent;
136                 #rewrite ^/bbs/(.*) http://www.westos.com/$1 permanent;
137                  # set_real_ip_from 172.25.70.1;
138                  # real_ip_header X-Forward-For;
139                  # real_ip_recursive on;
140                  # location / {
141                  #         return 200 "client real ip: $remote_addr\n" ;
142                  # }
143         }
144         server {
145                 listen 80;
146                 server_name bbs.westos.com;
147 
148                 location / {
149                         root /bbs;
150                         index index.html;
151                 }
152         }

在这里插入图片描述
重新加载配置文件

[root@server1 nginx]# systemctl reload nginx.service

客户端测试:

curl -I www.westos.com/bbs/index.html
[root@vits Desktop]# curl bbs.westos.com

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

4.设置不同域名访问同一资源
[root@server1 conf]# vim nginx.conf
==========================================
130     server {
131         listen 80;
132         server_name www.westos.com bbs.westos.com;
133 
134         #rewrite ^/(.*) https://www.westos.com/$1 permanent;
135         rewrite ^/bbs$ http://bbs.westos.com permanent;
136         rewrite ^/bbs/(.*)$ http://bbs.westos.com/$1 permanent;
137 
138         if ($host = "bbs.westos.com") {
139                 rewrite ^/(.*)$ http://www.westos.com/$1 permanent;
140         }
141         location / {
142                 root    /web;
143                 index   index.html;
144         }
145     }

在这里插入图片描述
重新加载配置文件,客户端测试:
在这里插入图片描述

[root@vits Desktop]# curl -I bbs.westos.com
[root@vits Desktop]# curl -I bbs.westos.com/index.html

在这里插入图片描述

七、防盗链

  • server1:172.25.70.1 被盗链的服务器
  • server2:172.25.70.2 盗链服务器
1.模拟盗链

1.在server2上:

[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
============================================================
118     server {
119         listen 80;
120         server_name daolian.westos.com;
121         charset utf-8;
122         location / {
123                 root /web;
124                 index index.html;
125         }
126     }

在这里插入图片描述
创建资源:

[root@server2 ~]# mkdir /web
[root@server2 ~]# vim /web/index.html
=========================================
<html>
<body>
<br>盗链图片</br>
<img src="http://www.westos.com/vim.jpg">
</body>
</html>

在这里插入图片描述
2.在server1上创建被盗链的资源:

[root@server1 html]# vim ../conf/nginx.conf
    server {
        listen 80;
        server_name www.westos.com bbs.westos.com;

        #rewrite ^/(.*) https://www.westos.com/$1 permanent;
        rewrite ^/bbs$ http://bbs.westos.com permanent;
        rewrite ^/bbs/(.*)$ http://bbs.westos.com/$1 permanent;

        if ($host = "bbs.westos.com") {
                rewrite ^/(.*)$ http://www.westos.com/$1 permanent;
        }
        location / {
                root    /web;
                index   index.html;
        }
    }
[root@server1 html]# ls
50x.html  vim.jpg  index.html  search
[root@server1 html]# cp vim.jpg /web/
[root@server1 html]# cd /web
[root@server1 web]# ls
vim.jpg  index.html

在这里插入图片描述
3.重启server1、server2上的nginx服务,在客户端增加本地解析并测试

  • server1:
[root@server1 search]# systemctl reload nginx.service 
  • server2:
[root@server2 nginx]# systemctl reload nginx.service

客户端:

vim /etc/hosts
======================
172.25.70.1 server1 www.westos.com bbs.westos.com
172.25.70.2 server2 www.westos.org daolian.westos.com

测试:
在这里插入图片描述
盗链成功

2.防止盗链

1.在我们的server1上编辑配置文件:

[root@server1 html]# vim ../conf/nginx.conf
================================================
131          server {
132                  listen 80;
133                 server_name www.westos.com #bbs.westos.com;
134                 #rewrite ^/(.*) https://www.westos.com/$1 permanent;
135                 rewrite ^/bbs$ http://bbs.westos.com permanent;
136                 rewrite ^/bbs/(.*)$ http://bbs.westos.com/$1 permanent;
137                  # set_real_ip_from 172.25.70.1;
138                  # real_ip_header X-Forward-For;
139                  # real_ip_recursive on;
140                  # location / {
141                  #         return 200 "client real ip: $remote_addr\n" ;
142                  # }
143                 if ($host = "bbs.westos.com") {
144                         rewrite ^/(.*)$ http://www.westos.com/$1 permanent;
145                 }
146                 location / {
147                         root /web;
148                         index index.html;
149                 }
150          location ~* \.(gif|jpg|png|jpeg)$ {
151                  root    /web;
152                  valid_referers none blocked www.westos.com;
153                  if ($invalid_referer) {
154                          rewrite ^/ http://bbs.westos.com/daolian.jpg;
155                  }
156          }
157         }
158         server {
159                 listen 80;
160                 server_name bbs.westos.com;
161 
162                 location / {
163                         root /bbs;
164                         index index.html;
165                 }
166         }
167 
168 }

在这里插入图片描述
在这里插入图片描述
2.创建检测到盗链后,重定向的资源:

[root@server1 ~]# cd /bbs/
[root@server1 bbs]# ls
daolian.jpg  index.html

3.重新加载配置文件后,在客户端测试:

[root@server1 nginx]# systemctl reload nginx.service

测试:

daolian.westos.com

在这里插入图片描述
被盗链的服务器将盗链请求给重定向!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值