WEB资源网

最新鲜的WEB程序员技术文档及相关资源 – Happy Life, Happy Coding!

Nginx 配置文件总结

顶级配置

#定义 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

作者
主站点:http://9iphp.com/ 个人简介:http://me.9iphp.com