nginx优化

创建多个池子
[www1]
listen =/tmp/www1.sock  
user = php-fpm
group = php-fpm
pm = dynamic            
pm.max_children = 50      
pm.start_servers = 20
pm.min_spare_servers =5   
pm.max_spare_servers =35  
pm.max_requests = 500     
rlimit_files = 1024         
 
[root@superz~]#/usr/local/php/sbin/php-fpm –t
[root@superz ~]#/etc/init.d/php-fpmrestart
[root@superz ~]#ps aux|grepphp-fpm
 
不同的域名指定不同的池子/多个域名使用一个池子
[root@superz ~]#ls/usr/local/nginx/conf/vhosts
111.conf   222.conf
             编辑fastcgi_pass unix:/tmp/php-fcgi.sock这行
             指定池子,如指定www ,则修改为fastcgi_pass unix:www.sock
                       如指定www ,则修改为fastcgi_pass unix:www1.sock
性能追踪 网站运行慢
[root@superz ~]#vim/usr/local/php/etc/php-fpm.conf
在每个池子下面加入慢查询
slowlog =/tmp/www_slow.log  #不同的池子指定不同的slowlog
request_slowlog_timeout=1    #执行时间超过1秒就记录它
 
php_admin_value[open_basedir]=/data/www/:/tmp/
#将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径
 
1.6 常见的502问题解决
[root@superz ~]#cd/usr/local/nginx/conf/vhosts/
[root@superz vhosts]#vim../nginx.conf #查看错误日志在哪儿,找errorlog
[root@superz vhosts]#cat/usr/local/nginx/logs/nginx_error.log  #查看错误日志
Unix:/tmp/www/sockfailed(Permission denied)          #没有权限去读这个文件
[root@superz vhosts]#ls l /tmp/www.sock                  #查看这个文件的权限
srw-rw---- 1 root root 0 1 29 11:55 /tmp/www.sock
[root@superz vhosts]#ps aux|grep nginx                    #查看nginx属主(nobody
[root@superz vhosts]#vim/usr/local/php/etc/php-fpm.conf     编辑php配置文件
Group下加入监听用户和组的人
listen.owner = nobody
listen.group = nobody
[root@superzvhosts]#/usr/local/php/sbin/php-fpm –t
[root@superzvhosts]#/etc/init.d/php-fpm restart
 
1.7 nginx 用户认证
Discus 管理中心,仅有一层密码,不安全。配置多一层密码。
[root@superz ~]#cd/usr/local/nginx/conf/vhosts/
[root@superz vhosts]# vimtest.conf   #打开虚拟主机配置文件
 
root下面一行添加:
location ~.*admin\.php$  {
       auth_basic "aminglinux auth";
       auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
       include fastcgi_params;
fastcgi_passunix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME /data/www$fastcgi_script_name;
}
 
[root@superz vhosts]#htpasswd -c /usr/local/nginx/conf/.htpasswd aming
输入两次密码
[root@superz vhosts]#htpasswd  /usr/local/nginx/conf/.htpasswdaming1
(再次添加用户时,-c必须去掉)
                  输入两次密码
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -t
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -s  reload
[root@superz vhosts]#curl x127.0.0.1 uaming:密码 www.test.com/admin.php
                  显示html表示正常解析。
 
1.8 nginx 域名跳转
[root@superz ~]#cd/usr/local/nginx/conf/vhosts/
[root@superz vhosts]#vimtest.conf
server_name后直接加上一个域名(空格分隔)www.aaa.com
在下面加入一行
if ($host !=‘www.test.com’)
{
rewrite ^/(.*)$http://www.test.com/$1 permanent;
}
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -t
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -s  reload
[root@superz vhosts]#curl x127.0.0.1:80 www.aaa.com/fjdjgld -I #自动跳转到www.test.com
 
设置301域名跳转的目的,为了让搜索引擎加重主域名的权重
百度搜索栏输入Site:www.aminglinux.com
 
1.9 nginx不记录指定文件类型日志
[root@superz ~]# cd/usr/local/nginx/conf/vhosts/
[root@superz vhosts]# vim../nginx.conf
log_format  aming'$remote_addr $http_x_forwarded_for [$time_local]'
           日志名    远程ip         代理ip           时间
'$host "$request_uri" $status'
                 域名   保存地址     链接
'"$http_referer" "$http_user_agent"'
(防盗链)页面或资源来源的请求头     判断从哪里访问
[root@superz vhosts]#vim  test.conf
root下增加一行
access_log /tmp/access.logaming;
[root@superz vhosts]#/usr/local/nginx/sbin/nginx –t
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -s reload
[root@superz vhosts]# curl-x127.0.0.1:80 www.test.com/fgsdfdsf -I
[root@superz vhosts]# ls/tmp/access.log #这时候会生成一个日志
/tmp/access.log
[root@superz vhosts]# cat /tmp/access.log  
#刷新网页查看日志内容 会发现有很多日志,其中包括png,gif等,这些都是没必要存在的
 
 
 
配置如下:
[root@superz vhosts]#vim  test.conf
location ~ .*\.( gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
        {
                access_log off;
        }
 
        location ~ .*\.(js|css)$
        {
                access_log off;
        }
 
 
2.0 nginx日志切割
[root@superz vhosts]# vim/usr/local/sbin/nginx_logrotate.sh
                    #创建一个脚本
#!/bin/bash
d=`date -d "-1day" +%F`
[ -d /tmp/nginx_log] ||mkdir /tmp/nginx_log
mv /tmp/access.log  /tmp/nginx_log/$d.log
/etc/init.d/nginx reload >/dev/null
cd /tmp/nginx_log/
gzip -f $d.log              
 
[root@superz vhosts]# sh -x/usr/local/sbin/nginx_logrotate.sh
[root@superz vhosts]# cd/tmp/nginx_log
[root@superz nginx_log]# ls
2016-06-14.log.gz
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.1 nginx配置静态文件过期时间(缓存)            
设置缓存的好处:加快读取网页速度,节省带宽。
[root@superz vhosts]#vim  test.conf
修改成如下所示:
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                access_log off;
                expires 15d;         #缓存15
        }
   location ~\.(js|css)
    {
        access_log off
        expires 2h;                   #缓存2小时
}
 
[root@superz vhosts]# /usr/local/nginx/sbin/nginx –t
[root@superz vhosts]# /usr/local/nginx/sbin/nginx -s reload
[root@superz vhosts]# curl -x127.0.0.1:80 'www.test.com/static/js/ajax.js–I
                    #Cache-Control:max-age=7200这个即为设置的缓存2小时
 
2.2 nginx配置防盗链
[root@superz vhosts]# vim test.conf
 
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
        {
                access_log off;
                expires 15d;
                valid_referers noneblocked *.test.com
*.aa.com  *.aminglinux.com;
                if($invalid_referer)
                {
                   return 403;
                }
        }
[root@superz vhosts]# /usr/local/nginx/sbin/nginx -t
[root@superz vhosts]# /usr/local/nginx/sbin/nginx -s reload
[root@superz vhosts]# curl -e http://www.baidu.com/111   
-I -x127.0.0.1:80 '图片地址’
 
 
 
 
 
 
2.3 nginx访问控制
[root@superz ~]# cd/usr/local/nginx/conf/vhosts/
[root@superz vhosts]# vimtest.conf
#删除 location ~ .*admin下面两行
增加:
 
allow 127.0.0.1;
       deny all;
 
[root@superz vhosts]#/usr/local/nginx/sbin/nginx –t
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -s reload
 
#测试
[root@superz vhosts]# curl-x127.0.0.1:80 www.test.com/admin.php -I
HTTP/1.1 200 OK
[root@superz vhosts]# curl-x192.168.1.200:80 www.test.com/admin.php -I
HTTP/1.1 403 Forbidden
[root@superz vhosts]# curl-x192.168.1.200:80 www.test.com/forum.php -I
HTTP/1.1 200 OK
 
Nginx的访问控制不分先后顺序,直接一行一行过滤,命中了一条规则立马生效,其他的一概不管。
 
2.4 nginx 禁止指定user_agent
[root@superz vhosts]#vimtest.conf
#location ~ .*admin上增加两行
 
if ($http_user_agent ~*'curl|baidu|111111')  ~*号不区分大小写匹配)
    {
       return 403;
}
 
[root@superz vhosts]#/usr/local/nginx/sbin/nginx –t
[root@superz vhosts]#/usr/local/nginx/sbin/nginx -s reload
#测试
[root@superz vhosts]# curl-x192.168.1.200:80 www.test.com/forum.php -I
HTTP/1.1 403 Forbidden
[root@superz vhosts]# curl-A "dsadsadsadsadsadsa" -x192.168.1.200:80 www.test.com/forum.php -I
HTTP/1.1 200 OK
[root@superz vhosts]# curl-A "dsadsad111111adsadsa" -x192.168.1.200:80 www.test.com/forum.php-I
HTTP/1.1 403 Forbidden
 
2.5 nginx代理详解
[root@superz vhosts]# vimproxy.conf  #新建proxy.conf
upstream aming{
    server 61.135.169.121:80; #使用dig www.baidu.com得到
    server 61.135.169.125:80; #yum installbind*安装dig
}
server {
    listen 80;
    server_name www.baidu.com;
 
    location / {
          proxy_pass http://aming/;  #真正网站所在的ip
          proxy_set_header Host $host; #多个server必须打开
             }
}
 
[root@superz vhosts]# curl-x127.0.0.1:80 www.baidu.com
posted @ 2016-06-19 08:55  blackmamba12524  阅读(252)  评论(0编辑  收藏  举报