顶级配置
#定义 Nginx 运行的用户和用户组 user nginx; #进程文件 pid /var/run/nginx.pid; #错误日志位置和级别,debug、info、notice、warn、error、crit error_log /var/log/nginx/error.log warn; #Nginx worker 的进程数,一般可设置为可用的CPU内核数。 worker_processes 8; #每个 worker 打开文件描述符的最大数量限制。理论值应该是最多打开文件数(系统的值ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不均匀,所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 65535;
修改系统文件打开数量限制:
sudo sh -c ulimit -HSn 65535 //临时修改
重启后永久生效,则需要设置修改:
sudo vim /etc/security/limits.conf
在文件尾部添加:
* soft nofile 200000 * hard nofile 200000
Events 模块
events {
#设置一个worker进程同时打开的最大连接数
worker_connections 2048;
#告诉nginx收到一个新连接通知后接受尽可能多的连接
multi_accept on;
#设置用于复用客户端线程的轮询方法。如果你使用Linux 2.6+,你应该使用epoll。如果你使用*BSD,你应该使用kqueue。
use epoll;
}
HTTP 模块
SERVER 模块
server {
#监听端口,nginx 会根据请求的 HOST 来决定使用哪个 SERVER 段的配置。如果没有匹配的 server_name,则默认使用配置文件中第一个。加上 default_server 则可以以指定没有匹配时的默认规则。
#listen 80;
listen 80 default_server;
#域名可以有多个,用空格隔开
server_name www.test.com test.com;
root /user/share/nginx/html/test;
#404页面配置
error_page 404 /404.html;
#配置 ssl,有需要时开启。
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
index index.html index.php;
}
#图片缓存时间设置
location ~ .*.(gif|jpg|jpeg|png|bmp|swf){
expires 10d;
}
#JS和CSS缓存时间设置
location ~ .*.(js|css)? {
expires 1h;
}
location ~ [^/]\.php(/|) {
fastcgi_index index.php;
#开启 PATH_INFO 支持,作用就是把参数按照给定的正则表达式分割成fastcgi_script_name 和 fastcgi_path_info。
#例如:请求 index.php/id/1 不加此行配置时,fastcgi_script_name 是 /index.php/id/1,fastcgi_path_info 是空。
#加上之后,fastcgi_script_name 是 index.php,fastcgi_path_info 是 /id/1
fastcgi_split_path_info ^(.+\.php)(.*);
#此值即是 PHP 中 _SERVER['SCRIPT_FILENAME'] 的值
fastcgi_param SCRIPT_FILENAMEdocument_rootfastcgi_script_name;
fastcgi_param PATH_INFOfastcgi_path_info;
fastcgi_param PATH_TRANSLATED document_rootfastcgi_path_info;
#指定FastCGI服务器监听端口与地址。须和 PHP-FPM 的设置相同。
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
参考资料:
- http://nginx.org/en/docs/
- http://www.oschina.net/translate/nginx-setup
- http://www.ha97.com/5194.html
via: segmentfault

