顶级配置
#定义 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