Nginx配置文件详细请咨询百度

默认网站

当Nginx配置文件中有且只有一个server时,该server被nginx认为时默认网站,所有发给nginx服务得访问请求,都会默认给该server

默认配置主要为server字段

server {
        ##监听端口
        listen       80;
        ##域名
        server_name  localhost;
        ##web根目录定义
        location / {
            root   html;
            index  index.html index.htm;
        }
        ##50x错误响应码返回页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

目录访问控制

场景模拟:只允许本机访问某目录,拒绝其他所有访问信息

location /a {
        #定义允许访问的主机
        allow 127.0.0.1;
        #定义拒绝访问的主机
        deny all;
        #return指定拒绝访问主机的返回页
        #return 404;
        return http://www.jd.com;
        }

登陆认证
参数配置auth_basic,默认为关闭

语法:auth_basic string | off;

        auth_basic_user_file file_path;

实例:

location /b {
        auth_basic "登陆验证";
        auth_basic_user_file /etc/nginx/htpasswd;
        }

htpasswd配置,需要安装httpd-tools包

语法:htpasswd [-cimBdpsDv] [-C cost] passwordfile username

[root@localhost ~]# mkdir /etc/nginx
[root@localhost ~]# htpasswd -m /etc/nginx/htpasswd admin

日志管理

Nginx访问⽇日志主要有两个参数控制

1) log_format  #⽤用来定义记录⽇日志的格式(可以定义多种⽇日志格式,取不不同名字即可)

log_format  log_name  string

2) access_log  #⽤用来指定⽇日⾄至⽂文件的路路径及使⽤用的何种⽇日志格式记录⽇日志

access_log  logs/access.log  main;

示例:

自定义日志格式

log_format test_01 '[$time_local] $remote_addr "$request" $status';

定义使用的日志格式

access_log  logs/host.access.log  test_01;

log_format格式变量:

    $remote_addr  #记录访问⽹网站的客户端地址

    $remote_user  #远程客户端⽤用户名

    $time_local  #记录访问时间与时区

    $request  #⽤用户的http请求起始⾏行行信息

    $status  #http状态码,记录请求返回的状态码,例例如:200、301、404等

    $body_bytes_sent  #服务器器发送给客户端的响应body字节数

    $http_referer  #记录此次请求是从哪个连接访问过来的,可以根据该参数进⾏行行防盗链设置。

    $http_user_agent  #记录客户端访问信息,例例如:浏览器器、⼿手机客户端等

    $http_x_forwarded_for  #当前端有代理理服务器器时,设置web节点记录客户端地址的配置,此参数⽣生效的前提是代理理服务器器也要进⾏行行相关的x_forwarded_for设置

防盗链

定义哪些访问内容不允许通过第三方访问

场景:各种格式的图片不允许通过第三方访问

示例一,图片有固定目录:

指定图片目录,定义允许访问的方式,如果不是以上方式,返回错误页面

location /images {
            valid_referers none blocked localhost;
            if ($invalid_referer) {
                return 403;
            }
        }

示例二,没有固定目录:

指定图片格式,所有访问网站中这些格式的图片,如果不是通过允许的方式访问,返回错误页面

location ~* \.(png|jpg|gif|bmp)$ {
            valid_referers none blocked localhost;
            if ($invalid_referer) {
                return 403;
            } 
        }

完整场景模拟

场景:发布一个内部网站,要求:

对图片目录做防盗链设置

用户只允许某个网段的IP访问

需要登陆验证

配置方法:

    server {
        listen       80;
        server_name  localhost;
        ##指定字符集
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location /a {
            auth_basic "登陆验证";
            auth_basic_user_file /etc/nginx/htpasswd;
            allow 10.16.0.0/24;
            deny all;
        }
        
        #location /images {
        location ~* \.(png|jpg|gif|bmp)$ {
            valid_referers none blocked localhost;
            if ($invalid_referer) {
                return 403;
            } 
        }

    配置完成后,测试配置是否正常。