运维常用操作

记录日常运维中,经常要用到的一些操作,也是备忘。

运维常用操作

Nginx日志

nginx 访问日志格式:

1
2
3
4
#访问日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$http_host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for $request_time';

1、快速截取某个时间段的日志

1
awk '$4 >="[01/Jun/2017:02:15:00" && $4 <="[01/Jun/2017:02:30:00"' xxx.log > xxx_cut.log

2、统计日志里访问次数最多的前十个IP

1
2
3
# awk '{print $1}' xxx.log|sort|uniq -c|sort -nr|head -10
# awk '{a[$1]++} END{for (i in a) print i,a[i]}' xxx.log |sort -k2 -rn|head

比较两个目录的差异

只比较目录中文件名的不同,不比较相同文件名的内容,输出结果。

1
# rsync --ignore-existing -rnc --out-format="%n" test/ test2/

参数说明:

1
2
--ignore-existing :忽略那些已经存在于接收端的文件,仅同步那些新创建的文件
-n : 仅输出要同步的文件名,不做同步

Nginx 跳转

xxx.com 跳转 www.xxx.com

第一种方法,可以在 www.xxx.comserver 里边配置:

1
2
3
4
5
6
7
8
9
10
server
{
listen 80;
server_name www.xxx.com xxx.com ;
...
if ( $host != 'www.xxx.com' ) {
rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
}
}

第二种方法,在配置文件里边写两个 server

1
2
3
4
5
6
server
{
listen 80;
server_name www.xxx.com ;
...
}

在该配置下面添加:

1
2
3
4
5
6
7
server
{
listen 80;
server_name xxx.com ;
rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
...
}

使配置生效

1
2
# nginx -t
# nginx -s reload

注意:这样跳转的结果,浏览器的地址栏上会变成:http://www.xxx.com/xxx,URL 会改变。

首页跳转

将原本 www.xxx.com 的页面跳转到 www.xxx.com/list 页面。

1
2
3
4
location / {
if ( $request_uri = "/" ) {
rewrite "/" http://www.xxx.com/list break;
}

注意:URL会改变。