Nginx的经常使用配置功能

资源的访问控制php

1.用户访问验证模块css

    ngx_http_auth_basic_module模块能够实现让访问者,在访问某些特定资源时,只有输入正确的用户密码才容许访问web内容html

    web上的一些内容不想被其余人知道,可是又想让部分人看到。nginx的http_auth模块以及Apache http_auth都是很好的解决方案。nginx

语法:     auth_basic string | off;
默认值:     auth_basic off;
配置段:     http, server, location, limit_except
默认不开启认证;后面若是跟上字符,这些字符会在验证弹窗中显示。

语法:     auth_basic_user_file file_path;
默认值:     —
配置段:     http, server, location, limit_except



  配置示例:web

    ①使用htpasswd(若是没有请安装httpd-tools软件包)工具建立用户验证文件正则表达式

[root@localhost /]# htpasswd -c -m /etc/nginx/.passwd ceshi
New password: 
Re-type new password: 
Adding password for user ceshi

    ②在须要验证的虚拟主机配置文件中配置location,添加auth_basic验证规则vim

[root@localhost /]# vim /etc/nginx/conf.d/static.conf 
server {
        listen 80;
        server_name www.aa5.com;
        access_log /var/log/nginx/accecc.log proxy;
        location / {
        root /web/;
        }
        error_page 404 /notfound/notfound.html;
        location =/notfound/notfound.html {
        root /web/;
        }

        location ^~ /admin/ {
        root /web/;
        auth_basic "please input your password!!!";
        auth_basic_user_file /etc/nginx/.passwd;
        }
}
[root@localhost /]# nginx -s reload

    ③客户端访问指定目录提示用户验证才能够访问
后端

$0[A${PBT46BT}~MV{}S$]2.png

2.来源ip访问控制
浏览器

    使用ngx_http_access_module模块来实现基于ip的访问控制功能缓存

    能够应用的字段有http、location、server

    示例:

        location / {
        deny 192.168.2.162;            ##拒绝指定ip访问
        allow all;                     ##容许全部人访问
        deny 192.168.1.0/24;           ##拒绝指定网段访问
        }



Nginx的URL重写(rewrite)

rewrite的组要功能是实现RUL地址的重定向,URL重写有利于网站首选域的肯定,对于同一资源页面多条路径的301重定向有助于URL权重的集中默认参数编译nginx就会支持rewrite的模块

rewrite语法格式及参数语法说明以下: 

将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI

注意:若是在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会从新一轮的替换检查,所以,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制

    rewrite    <regex>    <replacement>    [flag];
    关键字      正则        替代内容          flag标记
 
    关键字:其中关键字error_log不能改变
    正则:perl兼容正则表达式语句进行规则匹配
    替代内容:将正则匹配的内容替换成replacement
    flag标记:rewrite支持的flag标记
 
flag标记说明:
last  #重写完成后中止对当前URI在当前location中后续的其它重写操做,然后对新的URI启动新一轮重写检查;提早重启新一轮循环
break  #本条规则匹配完成即终止,再也不匹配后面的任何规则
redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址;不能以http://或https://开头
permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

语法示例:

rewrite ^/(.*) https://www.nnv5.cn/$1 permanent;            ##将访问http站点的全部url永久重写到https的站点下
rewrite ^/(.*).png /$1.jpg permanent;                       ##将访问.png结尾的url重写为.jpg
rewrite ^/ https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1558164084618&di=6bf7732ebfd157b56f786931ccf20df2&imgtype=0&src=http%3A%2F%2Fpic.58pic.com%2F58pic%2F13%2F81%2F71%2F46K58PICXQ9_1024.jpg;

rewrite为固定关键字,表示开始进行rewrite匹配规

regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是https://www.nnv5.cn/$1 ,$1是取自regex部分()里的内容。匹配成功后跳转到的URL

flag部分 permanent表示永久301重定向标记,即跳转到新的 https://www.nnv5.cn/$1 地址上

配置示例:

①编辑虚拟主机配置文件添加访问本站点全部.jpg文件时都重写为.html

[root@localhost web]# vim /etc/nginx/conf.d/static.conf 
server {
        listen 80;
        server_name www.aa5.com;
        access_log /var/log/nginx/accecc.log proxy;
        root /web;
        
        rewrite ^/(.*).jpg /$1.html;

        location / {
        root /web/;
        }
}
[root@localhost web]# vim /web/aaa.html 
aaa.html

②客户端使用浏览器访问www.aa5.com/aaa.jpg测试验证,会直接访问到网站根目录下的aaa.html文件

)JQZD$4KEJKZ[RJYKFZ6MDO.png




Nginx防盗链设置

网站防盗链,就是防止别人经过某些技术手段绕过本站的资源展现页面,盗用本站的资源;设置防盗链,就是让绕开本站资源展现页面的资源连接失效。简单地说就是防止本身网站上的资源(如图片、文档、音频、视频等资源)被其余用户采用其余的技术手段访问或下载。

当本身网站资源被盗链后,即便本身的网站流量并不大,也会加大网站服务器的负担,由于别人不是从你的网站下载资源,但耗费的倒是你的服务器带宽等资源。总之,网站被盗链后对自身的影响仍是很是大的。

而防盗链技术就是为了很好解决盗链这一问题的。防盗链技术的原理很简单,http标准协议中有专门的字段记录referer,既能够追溯上一个入站地址是什么,同时对于资源文件,能够跟踪到包含显示他的网页地址是什么,全部的防盗链方法都是基于这个Referer字段。

配置示例:

前提是要在nginx编译好以后在server字段中添加

location ~*\.(jpg|jpeg|png|gif|)$ {                        ##定义要防盗的资源类型
valid_referers none blocked *.aa2.com *.baidu.com *.google.com;        ##指定能够访问资源的域名或者ip
if ($invalid_referer) {
        #return 403;                                        ##若是不是上面定义的域名或ip访问资源则返回403错误
        rewrite /.* https://ss0.bdstatic.com/jcuanBn.jpg;    ##若是不是信任的域名或ip访问则将请求重写到这个地址
                }
}




Nginx的反向代理配置

经常使用配置参数

    location / {
        index index.jsp;
        proxy_pass   http://hello;    #在这里设置一个代理,和upstream的名字同样        #如下是一些反向代理的配置可删除
        proxy_redirect             off; 
        #后端的Web服务器能够经过X-Forwarded-For获取用户真实IP
        proxy_set_header           Host $host; 
        proxy_set_header           X-Real-IP $remote_addr; 
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
        client_max_body_size       10m; #容许客户端请求的最大单文件字节数
        client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout      300; #nginx跟后端服务器链接超时时间(代理链接超时)
        proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout         300; #链接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k如下的话,这样设置
        proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }

Nginx隐藏版本号

别人能够经过查看你使用的nginx版本号找漏洞,来***你

配置示例:

在http中添加该配置:
http {
server_tokens off;
}

Nginx动静分离

思路:动、静态的文件,请求时匹配不一样的目录或不一样的服务器

server {
        listen 80;
        server_name www.aa1.com www.test.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location ~* \.(png|jpg|jpeg|html|htm|js|css|xml|gif)$ {
                proxy_pass http://static;
        }

        location / {
                proxy_pass http://dong;
        }
}
相关文章
相关标签/搜索