一、nginx.conf文件的基本配置
vim /usr/local/nginx/conf/nginx.conf
user nobody nobody;
## 定义运行Nginx服务的用户和用户组
worker_processes 2;
## nginx进程数,建议设置为等于CPU总核心数,或者CPU总核心数的两倍.
error_log /usr/local/nginx/logs/nginx_error.log crit;
## error.log路径和日志(类型)级别,可以使用 [ debug | info | notice | warn | error | crit ] 参数
pid /usr/local/nginx/logs/nginx.pid;
## 进程pid文件路径,包含了nginx的父进程ID号
worker_rlimit_nofile 51200;
## 打开的文件描述符,最多打开多少.#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
events
{
use epoll;
## epoll是一种模式,参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型,windows下不指定。
worker_connections 6000;
## 单个的子进程最大处理多少个请求,多大的连接数.单个进程最大连接数(最大连接数=连接数*进程数)
}
#设定http服务器模块
http
{
include mime.types;
## 包含一个文件描述了:不同文件后缀对应的MIME,文件扩展名与文件类型映射表
default_type application/octet-stream;
## 制定默认MIME类型为二进制字节流
server_names_hash_bucket_size 3526;
## 服务器名称hash表的大小
server_names_hash_max_size 4096;
## 服务器名称hash表的最大值
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
'$host "$request_uri" $status'
'"$http_referer" "$http_user_agent"';
## 日志格式,可以按需更改.
sendfile on;
## 开启调用Linux的sendfile(),提供文件传输效率,开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
tcp_nopush on;
## 是否允许使用socket的tcp_nopush或tcp_cork选项
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;
## tcp_nodelay on 防止网络阻塞
gzip on;
## 启用 gzip压缩
gzip_min_length 1k;
## 最小压缩文件大小
gzip_buffers 4 8k;
## 压缩缓冲区
gzip_comp_level 5;
## 压缩等级
gzip_http_version 1.1;
## 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_types text/plain application/x-javascript text/css text/htm application/xml;
## gzip压缩的文件类型.
include vhosts/*.conf;
## 自定义虚拟主机配置文件,这里为相对路径vhosts目录下的所有.conf文件,支持*号来匹配。
创建一个vhosts目录然后再创建一个*.conf的配置文件
给一个常用的:
更改Nginx配置文件 vim /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;
include vhosts/*.conf;
}
mkdir /usr/local/nginx/conf/vhosts
vim /usr/local/nginx/conf/vhosts/default.conf
## 添加以下内容
server
{
listen 80 default_server;
## listen 80 表示监听端口是:80,default_serveer 定义这个conf文件是默认主机的配置
server_name localhost;
index index.html index.htm;
root /usr/local/nginx/html;
deny all;
## 直接deny掉所有,和apache不一样,因为apache有顺序,但是两个都会生效.这个一旦前面deny,后面allow也不生效了。这里deny all的意义是不能让别人的域名泛解析到这个服务器上来.
}
vim /usr/local/nginx/conf/vhosts/www.123.com.conf ## 再次新建一个www.123.com.conf文件做演示,可以自定义.
## 添加以下内容
server
{
listen 80;
## 监听端口:80
server_name www.123.com;
## 定义一个域名,本地做测试,可以把这个域名添加到hosts文件里面去。
index index.html index.htm index.php;
## 添加对index.php首页的支持,不然访问首页就是403错误。
root /usr/local/nginx/html;
location ~ \.php$ {
include fastcgi_params;
## fastcgi_params文件是FastCGI进程的一个参数配置文件,在安装Nginx后,会默认生成一个这样的文件,这里通过include指令将FastCGI参数配置文件包含了进来,关于FastCGI是什么可以参考这篇文章:http://ixdba.blog.51cto.com/2895551/806622
fastcgi_pass unix:/tmp/php-fcgi.sock;
## 本地可以使用sock套接字通信,远程可以使用IP+Port的方式通信. 这里定义监听的是:/tmp/php-fcgi.sock,php-fpm的配置文件也要改为/tmp/php-fcgi.sock,然后把listen.owner和listen.group改为nginx的服务启动用户,比如这里nginx服务的启动就是:nobody,因为只有nginx有权可以读/tmp/php-fcgi.sock这个通信文件,nginx和php-fpm才可以通信,网站才会正常,否则就会502错误。
#fastcgi_pass 127.0.0.1:9000;
## 本地也支持使用ip+port的形式通信,监听端口可以自定义.
fastcgi_index index.php;
## 这里暂时没有搞明白
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
## /usr/local/nginx/html是存放php程序的目录,这里写错会导致nginx 502错误
}
}
二. php-fpm.conf 配置
vim /usr/local/php/etc/php-fpm.conf
## 把之前的内容清空,然后写入如下配置:
[global] pid = /usr/local/php/var/run/php-fpm.pid ## 进程pid 文件路径,包含了php-fpm父进程的进程PID号 error_log = /usr/local/php/var/log/php-fpm.log ## error.log 文件路径 [www] ## 定义一个名为www的pool,可以定义多个,这么做的目的是降低风险,增加安全性,一个pool挂了,另一个还可以正常访问. listen = /tmp/php-fcgi.sock ## 使用监听套解字的形式,如果是多个pool,名称要不一样.nginx配置文件的监听方式要和这里一致.否则就是502. user = php-fpm ## php-fpm服务的用户主 group = php-fpm ## php-fpm服务的用户组 listen.owner = nobody ## 定义/tmp/php-fcgi.sock的用户主,要和nginx服务定义的用户主一样. listen.group = nobody ## 定义/tmp/php-fcgi.sock的用户组,要和nginx服务定义的用户组一样. pm = dynamic ## php-fpm进程的启动方式,dynamic是动态,也可以使用静态:static pm.max_children = 50 ## 如果是静态的方式启动php-fpm,那么启动php-fpm就是50个子进程,dynamic方式启动那么最大就是50,也就是说50是它的上限. pm.start_servers = 20 ## dynamic方式启动php-fpm,一开始启动的子进程数量 pm.min_spare_servers = 5 ## dynamic方式启动php-fpm,空闲的时候最低不能小于5 pm.max_spare_servers = 35 ## dynamic方式启动php-fpm,空闲的时候最大不能超过35 pm.max_requests = 500 ## 子进程最大给多少个请求提供的服务 rlimit_files = 1024 ## 子进程打开的最大文件数 slowlog = /usr/local/nginx/logs/slow.log ## 慢查询日志 request_slowlog_timeout = 1 ## 超时多少秒才记录到慢查询日里 php_admin_value[open_basedir]=/data/www/:/tmp/ ## 定义open_basedir /data/www是网站根目录,可以设置多个目录,以:号隔开, open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号"."来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名。 举例来说: 若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都是 可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。例如设置成:"open_basedir = /dir/user/" 请注意: 若在php.ini所设置的上传文件临时目录为/tmp/, 那么设置open_basedir时就必须包含/tmp/,否则会导致上传失败. 新版php则会提示"open_basedir restriction in effect"警告信息, 但move_uploaded_file()函数仍然可以成功取出/tmp/目录下的上传文件,不知道这是漏洞还是新功能
## 配置多个pool的格式
[global] ... ... [domain1.com] ... ... ... [domain2.com] ... ... ...
参考1:http://www.ha97.com/5194.html
参考2:百度,谷歌
Leave a Reply
You must be logged in to post a comment.