时间服务、日志服务、sudo;nginx模块

1搭建chrony时间服务器

安装:
yum install chrony -y
查看chrony的配置文件
rpm -ql chrony | grep “conf$”
vim /etc/chrony.conf

 使用pool.ntp.org项目中的公共服务器。以server开,理论上你想添加多少时间服务器都可以。
 Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
driftfile /var/lib/chrony/drift

 chronyd根据需求减慢或加速时间调整,
 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。
 该指令强制chronyd调整时期,大于某个阀值时步进调整系统时钟。
只有在因chronyd启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。
makestep 1.0 3

 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
rtcsync

 Enable hardware timestamping on all interfaces that support it.
 通过使用hwtimestamp指令启用硬件时间戳
#hwtimestamp eth0
#hwtimestamp eth1
#hwtimestamp *

Increase the minimum number of selectable sources required to adjust
the system clock.
#minsources 2

 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
#allow 192.168.0.0/16
#deny 192.168/16

Serve time even if not synchronized to a time source.
local stratum 10

 指定包含NTP验证密钥的文件。
#keyfile /etc/chrony.keys

 指定日志文件的目录。
logdir /var/log/chrony

Select which information is logged.
#log measurements statistics tracking

服务器保持默认配置,关闭防火墙SELINUX
在另一台主机上,打开配置文件,注释掉其他服务器

server 192.168.159.131 iburst`
重启服务
systemctl restart chronyd
验证是否成功
chronyc sources -v

2.日志服务器的搭建,rsyslog

在服务器端的vim /etc/rsyslog.conf
添加如下,这是开启

$ModLoad imudp  #引用udp协议的模块
$UDPServerRun 514  #设置udp协议使用端口
$ModLoad imtcp  #引用udp协议
$InputTCPServerRun 514

在客户端添加如下
*.info;mail.none;authpriv.none;cron.none @192.168.159.131

facitlity.priority 模式可在其他文档看到

3sudo

sudo:
1.进行修改配置文件不建议直接在主配置文件下; 2.授权的命令必须要格式一致,多一个"/"都会出错; 3.运行时必须使用sudo
为方便使用visudo 打开自定义的配置有自动加亮等特点 使用 export EDITOR=vim
2.系统管理员的身份实际依据的是uid=0
2.visudo -f /etc/sudoers.d/xx ; 切换用户后必须使用 sudo cmd ; centos5不支持扩展配置文件
3.%group 一旦某组授权了,其中的用户可以使用
4.使用pssh将自定义的sudo授权文件推送给多台主机,在各自服务器上进行修改并使用,不建议使用nfs,会出现用户发生更改等诸多问题~nfsnobody!!

5.将文件发往多台主机
pscp.pssh -A -h ip.txt /etc/sudoers.d/file /etc/sudoers.d/

4nginx相关模块

(部分来自其他师哥的博客)

配置文件:

    主配置文件:/etc/nginx/nginx.conf

main配置段常见的配置指令

    正常运行必备的配置

      1、user
                  Syntax: user user [group];
                  Default: user nobody nobody;
                  Context: main

      2、pid /PATH/TO/PID_FILE;
                  指定存储nginx主进程进程号码的文件路径;

      3、include file | mask;
                  指明包含进来的其它配置文件;

      4、load_module file;
                    指明要装载的动态模块;

    优化性能相关的配置

      1、worker_processes number | auto;
                  worker进程的数量(小于等于主机cpu的物理核心数;)
                  auto:当前主机物理CPU核心数;

      2、worker_cpu_affinity cpumask ...;
                  worker_cpu_affinity auto [cpumask];把nginx进程绑定到指定cpu
                  CPU MASK:cpu掩码

      3、worker_priority number;
                  指定worker进程的nice值,设定worker进程优先级;[-20,20]

      4、orker_rlimit_nofile number;
                  worker进程所能够打开的文件数量上限

    调试和定位问题的配置

      1、daemon on|off;
                  是否以守护进程方式运行Nignx;

      2、master_process on|off;
                  是否以master/worker模型运行nginx,默认on;

      3、error_log file [level];错误日志等级

    事件驱动相关的配置

      1、worker_connections number;
                  每个worker进程所能够打开的最大并发连接数数量

      2、use method;
                  指明并发连接请求的处理方法;

      3、accept_mutex on | off;
                  处理新的连接请求的方法(on:worker轮流处理,Off:每个新请求都通知所有的worker进程)

与套接字相关的配置

1、server{...}:配置一个虚拟主机

server {
        listen address[:PORT]|PORT;
        server_name SERVER_NAME; #主机名(可使用通配符或正则表达式)
        root /PATH/TO/DOCUMENT_ROOT;
        proxy_pass http://ip;    #反向代理

        tcp_nodelay on | off #默认on,keepalive模式下数据包不会立即发送,而是等到数据包到最大时才一次性发出去,有利于解决网络堵塞
        tcp_nopush on | off  #sendfile模式下,是否等待应用层首部合并一起发送
        sendfile on | off    
}

定义路径相关的配置

1、root 资源路径映射

2、location 根据url进行对应配置

    =:精确匹配;
    ~:正则表达式匹配,区分大小写;
    ~*:正则表达式匹配,不区分大小写;
    ^~:左侧匹配,不区分字符大小写;
    不带符号:匹配起始于此uri的所有的url;

    匹配优先级:=,^~,~/~*,不带符号

3、alias 路径别名

server{
       listen 80;  
       server_name www.linux.io;
location  ^~ /images/{           
                   root /data/pictures/;    #匹配/data/pictures/images
                # alias /data/pictures/;    #匹配/data/pictures/
}

4、index 默认资源

5、error_page 指定错误页

6、try_files 

定义客户端请求的相关配置

      1、keepalive_timeout 

                  keepalive的超时时长,0表示禁止长连接(默认为75s)

       2、keepalive_requests 

                  一次长连接上允许请求资源的最大数量(默认为100)

       3、keepalive_disable none | browser ...;

                  对哪种浏览器禁用长连接;

       4、send_timeout ;

                  向客户端发送响应报文的超时时长(两次写操作之间的间隔时长)

       5、client_body_buffer_size size;

               用于接收客户端请求报文的body部分的缓冲区大小(默认16k),超出大小时,其将被暂存到磁盘上的由       client_body_temp_path指令所定义的位置;

       6、client_body_temp_path path [level1 [level2 [level3]]];

                  设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;

对客户端限制的相关配置

1、limit_rate rate;

      限制响应给客户端的传输速率,单位是bytes/second,0表示无限制;

2、limit_except method ... { ... }

      限制对指定的请求方法之外的其它方法的使用客户端;

文件操作优化的配置

1、aio on | off | threads[=pool];

      是否启用aio功能;

2、directio size | off;

      在Linux主机启用O_DIRECT标记,此处意味文件大于等于给定的大小时使用,例如directio 4m;

3、open_file_cache off;

      open_file_cache max=N [inactive=time];

            nginx可以缓存以下三种信息:

                 (1) 文件的描述符、文件大小和最近一次的修改时间;

                 (2) 打开的目录结构;

                 (3) 没有找到的或者没有权限访问的文件的相关信息;

            max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现缓存管理;

      inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于* * *

4、open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项;

5、open_file_cache_valid time;

      缓存项有效性的检查频率;默认为60s;

6、open_file_cache_min_uses number;

      在open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项;

7、open_file_cache_errors on | off;

      是否缓存查找时发生错误的文件一类的信息;

ngx_http_access_module模块:

实现基于ip的访问控制功能

      1、allow address | CIDR | unix: | all;

      2、deny address | CIDR | unix: | all;

            http, server, location, limit_except
ngx_http_auth_basic_module模块

            实现基于用户的访问控制,使用basic机制进行用户认证;

      1、auth_basic string | off;

      2、auth_basic_user_file file;
ngx_http_stub_status_module模块

 用于输出nginx的基本状态信息

      1、stub_status ;

    Active connections: 活动状态的连接数;

    accepts:已经接受的客户端请求的总数;

    handled:已经处理完成的客户端请求的总数;

    requests:客户端发来的总的请求数;

    Reading:处于读取客户端请求报文首部的连接的连接数;

    Writing:处于向客户端发送响应报文过程中的连接数;

    Waiting:处于等待客户端发出请求的空闲连接数;

ngx_http_log_module

模块以指定的格式写入请求日志

(1)log_format name string ...;

            string可以使用nginx核心模块及其它模块内嵌的变量;

(2)access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

            access_log off;#关闭日志记录

(3)open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
ngx_http_gzip_module:

压缩传输模块

(1)gzip on | off;
                  启用或禁用压缩响应

(2)gzip_comp_level level;
                     设置响应的GZIP压缩级别。可接受的值在1到9的范围内。

(3)gzip_disable regex ...;
                     禁用与“用户代理”标题字段匹配的任何指定正则表达式的请求响应的GZIPIP。

(4)gzip_min_length length;
                     启用压缩功能的响应报文大小阈值;

(5)gzip_buffers number size;
                    支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;

(6)gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;

    nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
    off:对代理的请求不启用
    no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;

(7)gzip_types mime-type ...;
                     压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;

ngx_http_ssl_module

(1) ssl on | off;
                     是否启用ssl

(2)ssl_certificate file;
                     当前虚拟主机使用PEM格式的证书文件;

(3)ssl_certificate_key file;
                     当前虚拟主机上与其证书匹配的私钥文件;

           (4)ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
                    支持ssl协议版本,默认为后三个;

           (5)ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

    builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;

    [shared:name:size]:在各worker之间使用一个共享的缓存;

(6)ssl_session_timeout time;
                     客户端一侧的连接可以复用ssl session cache中缓存 的ssl参数的有效时长;

ngx_http_rewrite_module

URL重定向,URL重写查找替换。将用户请求的URI基于regex所描述的模式进行检查,而后完成替换;

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

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

    last(循环):重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;
    break(跳出循环):重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
    redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
    permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;

(2)return返回
                     return code [text];
                     return code URL;
                     return URL;
                     停止处理并将指定的代码返回给客户端。

(3) rewrite_log on | off;
                      是否开启重写日志;

(4) if (condition) { ... }条件判断
                      引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;server, location;

(5)set $variable value;
                      用户自定义变量 ;
ngx_http_referer_module

网站的合法引用,防止盗链

格式:valid_referers none | blocked | server_names | string ...;

定义referer首部的合法可用值;

    none:请求报文首部没有referer首部;
    blocked:请求报文的referer首部没有值;
    server_names:参数,其可以有值作为主机名或主机名模式;
    arbitrary_string:直接字符串,但可使用作通配符;
    regular expression:被指定的正则表达式模式匹配到的字符串;要使用~打头,例如 ~..magedu.com;
    原文作者:N39_lxq
    原文地址: https://blog.51cto.com/14414023/2440119
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞