寻觅生命中的那一片浅草......

文章属于类别 应用软件

设置fastcgi_pass和proxy_pass使用长连接

默认情况下,无论是fastcgi_pass还是proxy_pass,每个请求都会建立后端服务器建立一个连接,然后关掉,这样带来的问题是

  • 每个连接都需要新建、关闭连接
  • tcp产生大量time_wait

建立upstream

这个是fastcgi的例子,如果是http的则把端口改下就可以了

upstream fastcgi_backend {
    server 127.0.0.1:9000;
    keepalive 60;
}

fastcgi_pass

加入fastcgi_keep_conn on;

location ~ .*\.php$
{
    fastcgi_pass fastcgi_backend;
    fastcgi_keep_conn on;
}

proxy_pass

location ~ .*\.php$
{
    # 清除"Connection"头部
    proxy_set_header   Connection "";
    # 将http版本由1.0修改为1.1
    proxy_http_version 1.1;
    proxy_pass  http://backend.server;
}

经过上面的优化,fastcgi和proxy的time_wait都可以由1000+下降到20+

主要参考

php-fpm的status和ping

php-fpm提供了状态输出,可以通过它来做些监控

修改php-fpm.conf

vi php-fpm.conf

# status
pm.status_path = /php_status

# ping
ping.path = /php_ping

修改fastcgi_params,解决访问php-fpm的status,显示空白页面的问题

vi nginx/conf/fastcgi_params
# 添加
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;

添加Nginx虚拟主机

server
{
    listen       80;
    server_name  localhost;
    location ~ ^/(php_status|php_ping)$ 
    {
        access_log off; 
        allow 127.0.0.1;
        deny all;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:10080;
    }
}

这样就可以了,测试

curl http://localhost/php_status
curl http://localhost/php_ping

用GoAccess分析Nginx日志

适合单次分析

简介

如果你想统计下以下数据,命令行工具GoAccess是非常适合的

  • 不同页面的访问
  • 不同Referrers
  • 不同来源IP
  • 404,浏览器,操作系统

 

日志格式

GoAccess用的是apache的格式定义,内置了4种格式,如果你用的是Nginx默认的日志格式,那么这里可以选”NCSA Combined Log Format”,也可以自定义,默认定义文件在:

~/.goaccessrc

你也可以在其他地方定义,然后通过-p指定日志格式定义文件

假设有一条日志格式是:

0.025 - 192.168.15.41 - - [08/Jan/2014:18:14:35 +0800] "GET /Game.php?agentName=kk&serverID=3 HTTP/1.1" 200 5803 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" -

分别代表处理时间、这个-是人为定义上去的、请求来源IP、这个-字段,是获取远程用户,这里没有,所以是-、这里的-是NCSA标准格式里的、请求时间、请求的URL、http响应码、发送的数据大小、引用来源,这里是空,所以是-、客户端版本等信息、最后一个列是让代理请求客户端IP的,这里是空,所以也是-

那么日志定义文件应该是这样:

color_scheme 0
date_format %d/%b/%Y
log_format %T - %h %^[%d:%^] "%r" %s %b "%R" "%u"
log_file /data/logs/web._php_only.log-20131212

分析

可以把分析结果输出到终端,也可以输出为html,json等格式

命令:

goaccess -f  /data/logs/web._php_only.log-20131212 > ur.html

这里有一个需要注意,由于一些接口的特点,每次请求的URL里有个加密串,造成每次请求的URL都是唯一的,goaccess无法统计它,这时可以加-q参数,忽略掉URL问号后面的参数。

命令

goaccess -q -f /data/logs/web._php_only.log-20131212

用Nginx的proxy_cache加速gitbucket

最近访问gitbucket,基本都要5-6s才能打开,在服务器上看java进程占用CPU500%,通过下面的proxy_cache配置,把图片等静态资源缓存起来,可以实现gitbucket秒开,CPU使用降到30%左右,效果非常明显

创建目录并给予Nginx运行用户权限

mkidr /data/cache/nginx
chown -R www.www /data/cache/nginx

http段配置

定义cache的存放路径

http{
proxy_cache_path /data/cache/nginx levels=1:2 keys_zone=cache:512m inactive=1d  max_size=60g;
# 下面省略其他配置
....
....
}

修改虚拟主机配置

# 注意下面的配置要放在location / {这个目录配置之前
location ~ \.(gif|png|txt|css|png|jpe?g|ico|js)$ { 
     proxy_pass http://localhost:8088;
     proxy_hide_header       Set-Cookie;
     proxy_ignore_headers    Set-Cookie Expires Cache-Control;

     proxy_redirect    off;
     proxy_buffering on;
     proxy_buffer_size  128k;
     proxy_buffers 100  128k;

     proxy_cache cache;
     proxy_cache_key $uri;
     proxy_cache_use_stale error timeout invalid_header;
     proxy_cache_valid 200 301 302 60h;
     expires 30d;
}

 

WordPress更新设置

今天更新,老提示输入ftp连接信息,实在不想开ftp,于是搜索了些资料,记录如下

一、确保Nginx和PHP-FPM用同一个用户运行
本例中是nginx用户

grep user /etc/nginx/nginx.conf
egrep 'user|group' /etc/php-fpm.d/www.conf

二、设置WordPress为nginx用户所有

chown -R nginx.nginx /data/web/wp

三、修改WordPress配置

vi wp-config.php
define('FS_METHOD', 'direct');

现在去后台更新,就不会提示输入ftp信息了。

2024年三月
« 5月    
 123
45678910
11121314151617
18192021222324
25262728293031