nginx作为web服务器的功能模块

1、nginx虚拟主机

[root@server1 conf]# pwd
/usr/local/lnmp/nginx/conf
[root@server1 conf]# vim nginx.conf
http{
...
121 server{
122         listen 80;
123         server_name www.westos.org;
124 
125         location /{
126         root /www1;
127         index   index.html;
128         }
129 }
130 server{
131         listen 80;
132         server_name www.linux.org;
133 
134         location /{
135         root /www2;
136         index   index.html;
137         }
138 }

139 }
[root@server1 conf]# cd /www1
[root@server1 www1]# cat index.html
www.westos.org
[root@server1 www1]# cd /www2
[root@server1 www2]# cat index.html
www.linux.org
[root@server1 www2]# nginx -s reload

2、https的实现

需要编译ssl模块
cd nginx-1.17.1/
yum install -y openssl-devel  # 编译ssl模块需要的依赖包
 ./configure --prefix=/usr/local/nginx/  --with-http_ssl_module --with-file-aio
make && make install
cd /etc/pki/tls/certs/
make cert.pem   # 制作证书
cp cert.pem /usr/local/nginx/conf/    # 证书在 /usr/local/nginx/conf/才会生效
cd /usr/local/nginx/conf/
vim nginx.conf
     server {
         listen       443 ssl;    # 监听端口为443
         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;
 
         location / {
             root /web;
             index index.html;
         }
     }

3、重定向

[root@server1 sbin]# vim nginx.conf
server{
        listen 80;
        server_name www.westos.org ;(这里可以有多个域名,nginx支持正则匹配,可以减少server数量)

        rewrite ^(.*)$ https://www.westos.org permanent(永久的);301永久重定向,去掉这个就是临时重定向	
}
[root@server1 sbin]# nginx -t
[root@server1 sbin]# nginx -s reload

4、并发、速率限制

[root@server1 conf]# vim nginx.conf
	limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
		允许访问html/download/的内容
        location /download/ {
        limit_req zone=one burst=1;  //并发限制为5
        limit_rate 50k;  //速率限制
        }
[root@server1 conf]# nginx -s reload
客户端测试:一次并发请求10个,我们设置的并发量是1,因此只会成功1个
测试:wget http://172.25.27.1/download/*		看到下载速率不大于50k

5、访问控制

[root@server1 admin]# pwd
/usr/local/lnmp/nginx/html/admin
[root@server1 admin]# vim index.html 
admin page
location /admin/ {
		//白名单,黑名单只需要将allow和deny互换位置
        allow 172.25.29.0/24;	//访问控制,与添加allow和deny的顺序有关系
        deny all;							//拒绝所有
}

6、缓存设置

[root@server1 conf]# vim nginx.conf
        location ~ .*\.(gif|jpg|png)$ {
                expires 30d;	//缓存30天
        }

7、防止恶意域名解析

[root@server1 conf]# vim nginx.conf
    server {
        listen       80;
        server_name  _;
        return 500;

8、防盗链
盗链原理:客户去访问server2上的某个资源,但serer2上边没有,所有做了一个假的资源,该资源指向服务器server1上的资源,所以用户能访问到该资源,但是走的是server2的流量。
1)、server的默认发布目录存在资源

[root@server1 conf]# vim nginx.conf
server{
        listen 80;
        server_name www.westos.org westos.org 
 location /{
                root /www1;
                index index.html;
         }
[root@server1 www1]# ls images/    //server1的/www1/images下有一张图片
iso7.gif

server2的默认发布目录下有一个假的资源

[root@server2 html]# cat index.html 
<html>
	<body>
		<img src="http://www.westos.org/images/iso7.gif">    #指向server1的资源
	</body>
</html>
//server2将其默认发布页设为server1主机上的图片
[root@server2 html]# /etc/init.d/httpd restart

所以客户访问server2的该资源时实际上访问的是server1上的资源
2)、server1防盗链

[root@server1 conf]# vim nginx.conf
server{
        listen 80;
        server_name www.westos.org westos.org 
        location ~ \.(gif|jpg|png)$ {
                root /www1;
        valid_referers none blocked www.westos.org;
        if ($invalid_referer) {
                return 403;
                 }
        }

这样配置,再遇到盗链的时候直接报403
3)、我们不仅可以在其盗链时直接拒绝,还可以做个重定向,在遇到这个的时候,让盗链者访问我们指定的资源

[root@server1 conf]# vim nginx.conf
      location ~ \.(gif|jpg|png)$ {
                root /www1;
        valid_referers none blocked www.westos.org;
        if ($invalid_referer) {
                rewrite ^/ http://bbs.westos.org/daolian.jpg;
        }
        }

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

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

9、文字压缩
(1)、配置

vim conf/nginx.conf
	 33     gzip  on;		//开启gzip压缩
	 34     gzip_min_length 20;	//设置将被gzip压缩的响应的最小长度(K)
	 35     gzip_comp_level 3;	//设置响应的gzip压缩级别(1--9)
	 36     gzip_types text/plain application/x-javascript text/css application/xml text/javascript  
application/x-httpd-php image/jpeg image/gif image/png;

(2)、测试

打开浏览器,清空缓存(ctrl + shift + delete)
访问nginx服务器(172.25.60.1)
curl查看:ctrl+shift+c--->Network--->reload--->看Size和Transf

10、图片压缩
需要重新编译,导入第三方模块

/usr/local/nginx/sbin/nginx -V
./configure --help | grep image
./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module --with-http_image_filter_module=dynamic
make
cd objs/
cp -f nginx /usr/local/nginx/sbin/nginx
mkdir /usr/local/nginx/modules
cp ngx_http_image_filter_module.so /usr/local/nginx/modules

cd /usr/local/nginx/
vim conf/nginx.conf
    load_module modules/ngx_http_image_filter_module.so;	//导入模块
    gzip  on;
    location /download/ {
        image_filter resize 100 150;
    }
nginx -s reload
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值