【注意】nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:nginx: [emerg] invalid condition。


#vim nginx.conf之后,就会有这样的内容。


[root@ChrisChan conf]# vim nginx.conf

user nobody nobody;     #用户名,无所谓随便写

worker_processes auto;  #worker进程数量,这个是依据cpu内核和负载量等等一些值而定的,不是越大越好,有些默认是4

error_log  /home/wwwlogs/nginx_error.log  crit;     #错误日志的存放路径

pid        /usr/local/nginx/logs/nginx.pid;     #master pid就在这个路径里,如果要写sh停止nginx,不用ps -ef再切块,直接cat这里就行

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

#工作模式及连接数上限

#下面的event和http是可以自己开发模块往里面填充,让nginx越来越灵活。
events
    {
        use epoll;    #epoll是多路复用IO(IO multiplexing)中的一种,适用于linux2.6内核以上,可以大大提升nginx性能       

        worker_connections 51200;        #worker可以同时打开的连接数,这也是nginx引以为傲的地方。
        multi_accept on;        #保持开启,nginx在接受新的请求的时候,会尽可能的接受链接。
    }

http    #当接收到http的请求时,这个模块是主力军
        default_type  application/octet-stream;

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;  #sendfile函数保持开启,这样磁盘和tcp端口之间可以复制数据
        tcp_nopush on;  #nginx在一个包中发送全部的头文件,而不是一次一个一次一个那种挤牙膏式

        keepalive_timeout 60;   
        #客户端的有效链接时间,如果超过60秒没有反应,服务器就会关闭这个链接,这个数字可以调小,15or30,不要让服务器总等

        tcp_nodelay on;     #nginx不要缓存数据,而是把小数据尽快的发出去

        fastcgi_connect_timeout 300;    #fastcgi链接超时的时间
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;

        gzip on;        #开启数据压缩,这样会减少要发送数据的量
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;     

        #设置压缩等级,从1~9,9就压缩速度最慢的但是压缩最彻底的等级
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        #具体的压缩方法
        gzip_vary on;   #检测客户端是否也可以gzip
        gzip_proxied   expired no-cache no-store private auth;  #准许或禁止基于请求、相应的压缩
        gzip_disable   "MSIE [1-6]\.";  #为指定的客户端关闭数据压缩,过来多少数据就传多少

        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

        server_tokens off;
        #log format        #日志的格式
        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
        access_log on;    #开启日志服务

server
    {
        listen 80 default_server;       #在本地所有IP上监听80端口,若写成192.168.1.7:80,就是只监听192.168.1.7的80端口
        #listen [::]:80 default_server ipv6only=on;
        server_name www.lnmp.org;       #域名
        index index.html index.htm index.php;   #首页第一选择是index.html,其次是index.htm...
        autoindex on;   #自动列域名打开,注意,这个平时请关闭!
        root  /usr/local/nginx/html;    #指定网页的路径

        #error_page   404   /404.html;    #指定错误页面,也可以指定502,501等等
        include enable-php.conf;

        location /{
                auth_basic "your password?";    #提示在访问/的时候需要密码
                auth_basic_user_file /usr/local/nginx/conf/passwd;    #密码存放的文件路径
                index index2.html;    #访问/的时候会出现index2.html的界面
                root /usr/local/nginx/html;
                }

        location /nginx_status    #可以通过/nginx_status来查看当前连接数等信息
        {
            stub_status on;    
            access_log   on;    
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;    #缓存gif/jpg等等文件要30天
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;    #缓存js/css文件要12个小时
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log  access;    #这个是http的access_log
    }
server
   {
        listen 80;
        server_name chrischan;
        root   /usr/local/nginx/html/server1;
        index index.html;
   }
include vhost/*.conf;
}

#mail {
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4revi" "UIDPLUS";

#       #server {
#       listen  localhost:110;
#       protocol        pop3;
#       proxy   on;
#       }

#       #server {
#       listen localhost:143;
#       protocol        imap;
#       proxy   on;
#       }
#}


如果服务器的cpu比较给力,内核比较新,推荐use epoll,处理高并发面不改色。但是kquene要差一点。


补充

--without-mail_pop3_module 禁用pop3协议(POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离 线协议标 准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中 的一员,主要用于 支持使用客户端远程管理在服务器上的电子邮件)

--without-mail_imap_module 禁用imap协议(一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。IMAP协议运行在 TCP/IP协议之上, 使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。)

--without-mail_smtp_module 禁用smtp协议(SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于 TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。)

--without-http_rewrite_module 禁用ngx_http_rewrite_module支持(该模块允许使用正则表达式改变URI,并且根据变量来转向以及选择配置。如果在server级 别设置该选项,那么他们将在 location之前生效。如果在location还有更进一步的重写规则,location部分的规则依然会被执行。如果这个URI重写是因为 location部分的规则造成的,那么 location部分会再次被执行作为新的URI。 这个循环会执行10次,然后Nginx会返回一个500错误。)