Nginx配置中的log_format用法梳理(设置详细的日志格式)

nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式;另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小。一般在nginx的配置文件中配置(比如:/usr/local/nginx/conf/nginx.conf)。

log_format指令用来设置日志的记录格式,它的语法如下:
log_format name format {format ...}
其中name表示定义的格式名称,format表示定义的格式样式。
 
log_format有一个默认的、无须设置的combined日志格式设置,相当于Apache的combined日志格式,其具体参数如下:
log_format combined '$remote_addr-$remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
 
也可以自定义一份日志的记录格式,不过要注意,log_format指令设置的名称在配置文件中是不能重复的。
 
假设将Nginx服务器作为Web服务器,位于负载均衡设备、Squid、Nginx反向代理之后,不能获取到客户端的真实IP地址了。
原因是经过反向代理后,由于在客户端和Web服务器之间增加了中间层,因此Web服务器无法直接拿到客户端的IP。
通过$remote_addr变量拿到的将是反向代理服务器的IP地址。
 
但是,反向代理服务器在转发请求的HTTP头信息中,可以增加X-Forwarded-For信息,用以记录原有的客户端IP地址和原来客户端请求的服务器地址。
这时候,要用log_format指令设置日志格式,让日志记录X-Forearded-For信息中的IP地址,即客户的真实IP。
 
例如,创建一个名为mylogformat的日志格式,在$http_x_forwarded_for变量记录用户的X_Forwarded-For IP 地址:
log_format mylogformat '$http_x_forwarded_for $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

在日志格式样式中,变量$remote_addr和$http_x_forwarded_for用于记录IP地址;
$remote_user用于记录远程客户端用户名称;
$time_local用于记录访问时间与时区;
$request用于记录请求URL与HTTP协议;
$status用于记录请求状态,例如成功时状态为200,页面找不到时状态为404;
$body_bytes_sent用于记录发送客户端的文件主体内容大小;
$http_referer用于记录是从哪个页面链接访问过来的;
$http_user_agent用于记录客户浏览器的相关信息。

- 阅读剩余部分 -

不同操作系统 Git 换行符问题

一、不同操系统下的换行符

CR回车 LF换行

Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r

二、保持换行符一致

打开git bash,设置core.autocrlfcore.safecrlf(可不设置),建议设置autocrlfinputsafecrlftrue,同时设置你的编辑器(Eclipse、Notepad++等)换行符为LF \n
下面为参数说明,--global表示全局设置

2.1、autocrlf

#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input

#提交检出均不转换
git config --global core.autocrlf false

2.2、safecrlf

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

centos 安装 PPTP VPN 服务

1 安装前检查系统

在安装之前查看系统是否支持PPTP VPN:
modprobe ppp-compress-18 && echo ok
如果输出 ok,表示系统支持。

2 安装软件包

yum install ppp
yum install pptpd

3 配置pptpd

vim /etc/pptpd.conf ,去掉 localipremoteip 前的 # 号,并根据服务器网络配置ip,我的配置如下:

localip 10.0.0.254 # 设置pptp虚拟网卡接口IP地址(注意:不是服务器的公共IP)
remoteip 10.0.0.100-200 # 为拨入vpn的用户动态分配的IP地址池

vim /etc/ppp/options.pptpd ,找到 ms-dns 部分,做如下修改:

ms-dns 8.8.8.8  #添加主DNS服务器地址
ms-dns 8.8.4.4  #添加备DNS服务器地址

接下来添加VPN用户及密码:
vim /etc/ppp/chap-secrets,添加测试账号:

# Secrets for authentication using CHAP
# client    server    secret            IP addresses
user_test1       pptpd   123456                 *
user_test2       pptpd   123456                 *

4 开启IP转发

vim /etc/sysctl.conf,修改 net.ipv4.ip_forward = 0net.ipv4.ip_forward = 1,执行 sysctl -p

- 阅读剩余部分 -

LNMP 环境下,ThinkPHP5 设置 public 为根目录网页显示空白解决办法

为了去掉TP5 URL地址里面的public,把网站根目录改成了 /home/wwwroot/www.csensix.com/public ,重启Nginx(lnmp nginx restart 或者 service nginx restart)发现网站打开空白,什么都不显示(谷歌浏览器提示500错误)。经过查找资料发现是lnmp一键环境包做了防跨站防护,导致不能访问public以外的目录。服务器环境 :centos6.8 64位,lnmp1.5 一键环境包(php多版本)

按lnmp集成环境提供的方法(lnmp vhost add)添加虚拟站点,访问 TP 站点就要加个二级目录,如
http://www.csensix.com/public

所以为了可以让访问链接变得更加友好(即http://www.csensix.com),可以修改/usr/local/nginx/conf/vhost/www.csensix.com.conf(下称“专属配置”)。

root /home/wwwroot/www.csensix.com;
改成
root /home/wwwroot/www.csensix.com/public;

- 阅读剩余部分 -

为什么我们做事常常不能坚持到底?

许多人很迷茫,不管做什么事情都容易半途而废,难以坚持到底。本文详细分析了为什么不能坚持的七种原因。

我们没有形成固定的时间节奏感

高中阶段我们都比较容易坚持做一件事。一个重要的原因是我们有良好规律的生活,我们每天按时起床,按时上课,按时自习,按时睡觉。

在一个有规律的生活里,人是容易有相对固定的受控时间去完成自己既定的目标。到了大学阶段,课表不是天天相同,生活也开始多了很多可能性,这意味着你的生活变得丰富的同时,你获得各种自由的同时,你开始失去你过去养成的节奏感。你开始慢慢变成被不同的事情推动去行动的人,而不是坚持在固定的时间干一点什么的人。

这种被碎片化事情推动的现象,不仅仅是在大学,一直到了职场,都会越来越严重。我的第一个建议是:要养成坚持的习惯,你最好要让自己有一些固定的时间去做固定的事情的习惯。

我建议大家做一些小事情,比如每天坚持在某个固定的时间写日记,练字,锻炼,一切你喜欢的事情都好,不需要太多的时间,哪怕就 15 分钟。这些小事情会慢慢形成你新的时间锚点,有了这些时间锚点,你才能在不同的环境里慢慢养成你生活中的新节奏感。有了时间节奏感的人,才能逐渐掌控自己的时间,获得更高的效率。

- 阅读剩余部分 -