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 机制进行用户认证;
- ,auth_basic string | off;
- ,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;
来源: http://www.bubuko.com/infodetail-3208953.html