nginx和php的基本配置说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx和php的基本配置说明相关的知识,希望对你有一定的参考价值。

   这段时间对nginxphp的一些配置文件深入学习了一下,把线上的服务做了一下参数优化,现在把一些基础的配置标注一下,让大家看看,希望大家能提出意见,让我能完善补全。

nginx

1. nginx.conf:

###########################################################################################

#运行用户

user nginx; 


#启动进程,通常设置成和cpu的数量相等

worker_processes 1;


#全局错误日志及PID文件

error_log /app/nginx/logs/error.log;

pid /app/nginx/logs/nginx.pid;

 

#一个nginx进程打开的最多文件描述符数目,建议与ulimit -n的值保持一致。(系统的值ulimit -n)

worker_rlimit_nofile 65535;


#工作模式及连接数上限

events {

#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能

use epoll;


#单个后台worker process进程的最大并发链接数

 worker_connections 2048; 

  }

  

#设定http服务器,利用它的反向代理功能提供负载均衡支持

  http {

             #设定mime类型,类型由mime.type文件定义

             include /app/nginx/mime.types;

 

             #默认文件类型

             default_type application/octet-stream;


             #设定日志格式

             log_format main ‘$remote_addr - $remote_user [$time_local] "$request" "$request_time" ‘

                             ‘$status $body_bytes_sent "$http_referer" ‘

                             ‘"$http_user_agent" "$http_x_forwarded_for"‘;

 

             #其中,各个字段的含义如下:

             #1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;

             #2.$remote_user :用来记录客户端用户名称;

             #3.$time_local : 用来记录访问时间与时区;

             #4.$request : 用来记录请求的url与http协议;

             #5.$request_time: 用来记录相应时间;

             #6.$status : 用来记录请求状态;成功是200,

             #7.$body_bytes_s ent :记录发送给客户端文件主体内容大小;

             #8.$http_referer :用来记录从那个页面链接访问过来的;

             #9.$http_user_agent :记录客户端浏览器的相关信息;

 

             #访问日志

             access_log /app/nginx/logs/access.log;


             #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载 应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.

             sendfile on;


             #连接超时时间

             keepalive_timeout 65;


             #设定客户请求头缓冲区大小。

             client_header_buffer_size 16k;

             large_client_header_buffers 4 64k;


             include /app/nginx/conf.d/*.conf;

}

###########################################################################################


php:

1. 配置php.ini

php.ini是php运行核心配置文件。

 

1)避免PHP信息暴露在http头中:

expose_php = Off

 

2)避免暴露php调用mysql的错误信息:

display_errors = Off

 

3)在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置):

log_errors = On

 

4)设置PHP的扩展库路径(使用默认就行): 

extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/"

 

5)设置PHP的时区:

date.timezone = Asia/Shanghai

 

6)开启opcache(看情况修改):

[opcache] ;

Determines if Zend OPCache is enabled 

opcache.enable=1 

opcache具体配置参考:http://www.cnblogs.com/HD/p/4554455.html

 

2. 配置php-fpm.conf

php-fpm.conf是 php-fpm 进程服务的配置文件。

 

1)设置php-fpm的pid路径:

pid = /app/php7.0.4/logs/php-fpm.pid

 

2)设置错误日志的路径:

error_log = /app/php7.0.4/logs/php-fpm.log

 

3)设置日志级别为:

log_level = error

日志可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.

 

4)设置文件打开描述符的rlimit限制,默认值为: 系统定义值。(可使用 ulimit -n查看):

rlimit_files = 32768

 

5)在linux服务器上,如果不设置events.mechanism,那么默认就是采用epoll:

events.mechanism = epoll


6)引入www.conf文件中的配置:

include=/app/php7.0.4/etc/php-fpm.d/*.conf

 

3. 配置www.conf(在php-fpm.d目录下)

www.conf这是 php-fpm 进程服务的扩展配置文件。

 

1)设置启动进程的用户和用户组:

user = nginx 

group = nginx

 

2)unix socket设置选项,如果使用tcp方式访问,这里注释即可:

isten.owner = nginx

listen.group = nginx

listen.mode = 0660

 

3)子进程最大数(看情况修改):

pm.max_children = 1024

 

4)启动时的进程数(看情况修改):

pm.start_servers = 16

 

5)保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程(看情况修改)::

pm.min_spare_servers = 5

 

6)保证空闲进程数最大值,如果空闲进程大于此值,此时进行清理(看情况修改):

pm.max_spare_servers = 20

 

7)设置每个子进程重生之前服务的请求数(看情况修改):

pm.max_requests = 2048

对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ‘0‘ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.


8)开启慢日志:

slowlog = /app/php7.0.4/logs/$pool.log.slow

 

9)当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 ‘0‘ 表示 ‘Off‘. 可用单位: s(秒)(默认), m(分), h(小时), 或者 d(天). 默认值: 0.:

request_slowlog_timeout = 3s

 

10):设置单个请求的超时中止时间:

request_terminate_timeout = 600s

 

11):错误日志:

php_admin_value[error_log] = /app/php7.0.4/logs/www_error.log


本文出自 “早起的鸟儿有虫吃” 博客,请务必保留此出处http://hejianping.blog.51cto.com/11279690/1791594

以上是关于nginx和php的基本配置说明的主要内容,如果未能解决你的问题,请参考以下文章

Nginx基础入门之fastcgi常用配置项说明

Nginx基础入门之fastcgi模块常用配置项说明

Nginx常用配置指令说明

Ubuntu下配置Nginx+PHP

CentOS 6.6 nginx PHP 配置

nginx php-cgi php