2015-05-13/2015-05-15LNMP第二部分nginx、php配置

内容概要:
一. nginx.conf
vim /usr/local/nginx/conf/nginx.conf //清空原来的配置,加入如下内容:
[[email protected] conf]# echo  1 >  /usr/local/nginx/conf/nginx.conf
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
    use epoll;
    worker_connections 6000;
}
http
{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]‘
    ‘$host "$request_uri" $status‘
    ‘"$http_referer" "$http_user_agent"‘;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm application/xml;
server
{
    listen 80;
    server_name localhost;
    index index.html index.htm index.php;
    root /usr/local/nginx/html;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    }
}
}
二. php-fpm.conf
vim   /usr/local/php/etc/php-fpm.conf     //把之前的内容清空,然后写入如下配置:
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
user = php-fpm
group = php-fpm
listen.owner = nobody 
listen.group = nobody
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
配置多个pool
[global]
...
...
[domain1.com]
...
...
...
[domain2.com]
...
...
...
listen = /tmp/php-fcgi.sock      用处  不同池子 对应不同 的域名     也可以共享一个池子

111.com     listen = /tmp/php-fcgi.sock

222.com     listen = /tmp/php-fcgi2.sock
333.com     listen = /tmp/php-fcgi3.sock
慢执行日志
slowlog = /path/to/slow.log
request_slowlog_timeout = 1
open_basedir
php_admin_value[open_basedir]=/data/www/:/tmp/
动态、静态子进程pm = static/dynamic
如果选择static,则由pm.max_children指定固定的子进程数。
如果选择dynamic,则由以下参数决定:
pm.max_children ,子进程最大数
pm.start_servers ,启动时的进程数
pm.min_spare_servers ,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers ,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
对于专用服务器,pm可以设置为static。
[[email protected] etc]# /usr/local/php/sbin/php-fpm  -t

[[email protected] etc]# /etc/init.d/php-fpm restart
三. nginx高级配置
1. 配置第二个虚拟主机
可以在nginx.conf 加一行

/usr/local/nginx/conf/vhosts

include  conf/vhosts/*.conf;  
这样,我们就可以在 conf/vhosts目录下创建虚拟主机配置文件了。
vim  conf/vhosts/111.conf   // 加入
server
{
    listen 80;
    server_name 111.com;
    index index.html index.htm index.php;
    root /data/www2;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/www2$fastcgi_script_name;
    }
}
2. 验证默认虚拟主机
listen       80 default_server;

[[email protected] vhosts]# /usr/local/nginx/sbin/nginx  -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[[email protected] vhosts]# 
3. 用户认证
首先需要安装apache,可以使用yum install httpd 安装
生成密码文件,创建用户
htpasswd -c /usr/local/nginx/conf/htpasswd  test // 添加test用户,第一次添加时需要加-c参数,第二次添加时不需要-c参数
在nginx的配置文件中添加
location  / {
                      root /data/www/wwwroot/count;
                      auth_basic              "Auth";
                      auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
            }
4. 域名重定向
server_name  aminglinux.com  www.aminglinux.com;
    if ($host != ‘www.aminglinux.com‘ ) {
        rewrite  ^/(.*)$  http://www.aminglinux.com/$1  permanent;
    }
5. 日志相关
日志切割:
编写脚本:

vi  /usr/local/nginx/logs/nginx_log.sh
#nginx日志切割脚本
#author: http://www.nginx.cn
#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/logs/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`

crontab 设置作业

0 0 * * * bash /usr/local/nginx/logs/nginx_log.sh

vim  /usr/local/sbin/logrotate.sh  //加入
#! /bin/bash
datedir=`date +%Y%m%d`
/bin/mkdir  /home/logs/$datedir >/dev/null 2>&1
/bin/mv /home/logs/*.log /home/logs/$datedir
/bin/kill -HUP `cat /var/run/nginx.pid`
日志格式
log_format main ‘$remote_addr - $remote_user [$time_local] $request ‘
                    ‘"$status" $body_bytes_sent "$http_referer" ‘
                    ‘"$http_user_agent" "$http_x_forwarded_for"‘;
log_format main1 ‘$proxy_add_x_forwarded_for - $remote_user [$time_local] ‘
                      ‘"$request" $status $body_bytes_sent ‘
                      ‘"$http_referer" "$http_user_agent"‘;  //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。
错误日志error_log日志级别
error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit, 该级别在日志名后边定义格式如下:
error_log  /your/path/error.log crit;  
crit 记录的日志最少,而debug记录的日志最多。如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。
6. 静态文件不记录日志,配置缓存
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
                expires      30d;
                access_log off;
        }
        location ~ .*\.(js|css)$
        {
                expires      12h;
                access_log off;
        }
7. 防盗链
在 nginx.conf中的server部分中添加如下代码
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {   
                valid_referers none blocked server_names  *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ;  // 对这些域名的网站不进行盗链。
                if ($invalid_referer) {
#                        return 403;
                        rewrite ^/ http://www.example.com/nophoto.gif;
                        }
                }
说明:如果前面配置中已经加了                 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                         {
                                 expires      30d;
                                 access_log off;
                         }
那么会和这一部分重复,这时候上面的生效,所以,我们需要把两者合在一起。如下:
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
         expires 30d;  
         valid_referers none blocked server_names  *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ;  // 对这些域名的网站不进行盗链。
         if ($invalid_referer) {
#               return 403;
                  rewrite ^/ http://www.example.com/nophoto.gif;
          }
          access_log off;
}
8. 访问控制
限制只让某个ip访问
    allow          219.232.244.234;
    deny           all;
禁止某个IP或者IP段访问站点的设置方法
首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip   
cat  deny.ip
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;
在nginx的配置文件nginx.conf中加入:
include deny.ip;
重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload 就可以生效了。
deny.ip 的格式中也可以用deny all;
如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
那需要你在deny.ip 中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;
有时候会根据目录来限制php解析:
location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$
{
        deny all;
}
使用 user_agent 控制客户端访问
location /
{
    if ($http_user_agent ~ ‘bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315‘){
            return 403;
    }
}
9. nginx的rewrite应用
Rewrite设置及示例 http://www.lishiming.net/thread-239-1-1.html
nginx $document_uri 参数使用 http://www.lishiming.net/thread-993-1-1.html
nginx的301与302如何配置 http://www.lishiming.net/thread-4840-1-1.html
nginx rewrite不支持if 嵌套也不支持逻辑或和逻辑并  http://www.lishiming.net/thread-4842-1-1.html
10. nginx 代理
server {
            listen 80;
            server_name aaa.com;
            location / {
                proxy_pass      http://2.2.2.2/;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
#            access_log  /home/logs/aaa_access.log combined;
        }
如果后端的机器有多台
upstream bbb
{
            server  1.2.3.1:80;
            server  1.2.3.4:80;
}
server {
        listen 80;
        server_name bbb.com;
        location / {
                proxy_pass      http://bbb/;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
#            access_log  /home/logs/bb_access.log combined;
}
代理一个服务器上所有域名
首先在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件
两个文件内容分别为
(1) servername
server_name www.123.net.cn www.alsdjfl.com www.asdfa1.com;  //就这么简单一行,当然这个server_name 还可以继续添加的
(2) 虚拟主机配置文件
server {
            listen 80;
            include vhosts/servername; // 这里的文件就是上边那个servername列表文件
            location / {
                proxy_pass     http://1.2.1.2/;  //这里就是需要做代理的服务器ip地址了
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            access_log  /dev/null;
        }
根据访问的目录来区分后端的web http://www.lishiming.net/thread-920-1-1.html
针对请求的uri来代理 http://www.lishiming.net/thread-1049-1-1.html
扩展学习:
nginx.conf 配置详解  http://www.ha97.com/5194.html
nginx rewrite 知识汇总  http://blog.c1gstudio.com/archives/434

时间: 2024-11-09 01:01:42

2015-05-13/2015-05-15LNMP第二部分nginx、php配置的相关文章

2015 年 JXNU_ACS 算法组寒假第二次周赛

2015 年 JXNU_ACS 算法组寒假第二次周赛 比赛链接:http://acm.hdu.edu.cn/diy/contest_show.php?cid=26246 Start Time : 2015-02-01 13:00:00 End Time : 2015-02-01 17:30:00 终榜:http://acm.hdu.edu.cn/diy/contest_ranklist.php?cid=26246&page=1 这次比赛考查的知识都很基础,甚至还有几道就是C语言基础(比如1006

张珺 2015/07/13 个人文档

姓名 张珺 日期 2015/07/13 主要工作及心得 今天主要和任笑萱一起完成了对客户端中提供者的调试以及数据库的修改工作. 通过今天的调试工作,我对整个项目有了更深入的认识,对于用java编写客户端服务器程序的流程有了更进一步的了解. 遇到的问题 在今天的工作中,我们发现了之前构建数据库时未考虑到的一些问题,也发现了之前完成的任务中存在的一些错误. 最开始时无法登陆,服务器端不返回消息.次问题结局后,提供者界面中主要的问题主要在于对会员.服务编号进行验证时出现的问题,例如返回的信息不满足预期

陈嘉 2015/07/13 个人文档

姓名 陈嘉 日期 2015/7/13 主要工作及心得 今天,我们将上周分工做的各部分组合起来,进行调试.结果和我们想的一样,根本不能运行.然后我们就开始了一天漫长的调试. 首先是数据从客户端,到服务器.数据库的传送.在第一个登陆界面输入完用户名和密码之后,点击登录按钮之后并没有反应.但是点击返回按钮仍然可以返回.说明并没有卡在某个函数里.数据从客户端传到了服务器,又成功返回,但是并没有执行对错判断.我们利用System.out.println来进行测试,验证猜想,检查数据在哪部分出了问题.结果是

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

2015 Xcode7 真机调试(开发者)以及P12配置

2015 Xcode7 真机调试(开发者)以及P12配置 关于真机方面,首要的就是真机调试,因为一个程序的开发是肯定离不开真机调试的,在Xcode7之前想要进行真机调试需要加入开发者计划,需要进行证书的配置,但Xcode7之后想要进行真机调试则非常简单,不需要配置证书就可以直接进行真机调试,但是不加入开发者计划的真机调试有很高的局限性,例如不能进行无缝调试,要修复错误,不能打包等等 开发者账号的分类 个人账号($99)==688 功能:可以真机调试, 打包测试, 程序发布 优点:申请速度快, 给

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置 1.Ctrl+shift+P 打开package control 输入pcip 回车 2.出现的框中输入gosublime,回车 3.preferences---package setting--gosublime--setting default 打开后在env{}中添加GOROOT和GOPATH 4.保存后全部复制到preferences---package setting--gosublime--setting

2015.12.29~2015.12.30真题回顾!-- HTML5学堂

2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停哦! HTML5真题[2015.12.29]题目 学习JavaScript或应用JavaScript进行脚本开发,“变量”这是必须要学会使用的.什么是变量呢?又什么作用呢?ok,大家稍安勿躁哦,试体验体验这题目<HTML5真题[2015.12.29]题目>与 <HTML5真题[2015.12

Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载

Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载 微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在纽约正进行中的#Connect# 全球开发者在线大会上宣布了Visual Studio 2015 和.NET 2015预览版,将为开发者提供构建跨多个平台应用程序的新功能,包括从Windows 到 Linux 到iOS,是的,以及到Android. 微软MSDN介绍称,目前移动开发者需要面对A

LNMP第二部分nginx、php配置(用户认证、域名重定向、日志、配置缓存、防盗链)

一.nginx的配置( nginx.conf) 1.nginx的主配置文件位置: /usr/local/nginx/conf/nginx.con 2.清空  /usr/local/nginx/conf/nginx.con默认的配置文件内容 [[email protected] ~]# > /usr/local/nginx/conf/nginx.conf >:重定向的意思,单独使用,可以把一个文本文档快速清空 3.拷贝一下代码到/usr/local/nginx/conf/nginx.conf文件

centos LNMP第二部分nginx、php配置 第二十四节课

centos  LNMP第二部分nginx.php配置  第二十四节课 上半节课 下半节课 f