nginx.conf

  1. user www www; # Nginx的worker进程运行用户以及用户组
  2. worker_processes 4; # 启动进程数,通常设置成和cpu的数量相等
  3. #worker_processes auto;
  4. #以下参数指定了哪个cpu分配给哪个进程,一般来说不用特殊指定。如果一定要设的话,用0和1指定分配方式.
  5. #这样设就是给1-4个进程分配单独的核来运行,出现第5个进程是就是随机分配了。
  6. #worker_processes 4 #4核CPU
  7. #worker_cpu_affinity 0001 0010 0100 1000
  8. error_log /home/wwwlogs/nginx_error.log crit; # 定义全局错误日志定义类型,[debug|info|notice|warn|crit]
  9. pid /usr/local/nginx/logs/nginx.pid; # PID文件
  10. #Specifies the value for maximum file descriptors that can be opened by this process.
  11. # 一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,
  12. # 但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
  13. worker_rlimit_nofile 51200;
  14. # 工作模式及连接数上限
  15. events
  16. {
  17. # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
  18. # epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,
  19. # 就用kqueue模型。
  20. use epoll;
  21. worker_connections 51200; # 单个后台worker process进程的最大并发链接数
  22. # worker工作方式:串行(一定程度降低负载,但服务器吞吐量大时,设置on使用并行方式)
  23. # 默认 off 串行即可
  24. multi_accept off;
  25. }
  26. http
  27. {
  28. #文件扩展名与文件类型映射表
  29. include mime.types;
  30. #默认文件类型
  31. default_type application/octet-stream;
  32. # 服务器名字的hash表大小
  33. server_names_hash_bucket_size 128;
  34. #指定来自客户端请求头的hearerbuffer大小
  35. client_header_buffer_size 32k;
  36. #指定客户端请求中较大的消息头的缓存最大数量和大小。
  37. large_client_header_buffers 4 32k;
  38. #客户端请求单个文件的最大字节数
  39. client_max_body_size 50m;
  40. sendfile on; #开启高效传输模式。
  41. #防止网络阻塞
  42. tcp_nopush on;
  43. keepalive_timeout 60; # 连接超时时间 ,单位是秒
  44. tcp_nodelay on;
  45. #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
  46. fastcgi_connect_timeout 300;
  47. fastcgi_send_timeout 300;
  48. fastcgi_read_timeout 300;
  49. fastcgi_buffer_size 64k;
  50. fastcgi_buffers 4 64k;
  51. fastcgi_busy_buffers_size 128k;
  52. fastcgi_temp_file_write_size 256k;
  53. gzip on; # 开启gzip压缩
  54. gzip_min_length 1k; #最小压缩文件大小
  55. gzip_buffers 4 16k; #压缩缓冲区
  56. gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
  57. gzip_comp_level 2; #压缩等级 1-9 等级越高,压缩效果越好,节约宽带,但CPU消耗大
  58. gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
  59. #压缩类型,默认就已经包含text/html,所以下面就不用再写了,
  60. #写上去也不会有问题,但是会有一个warn。
  61. #前端缓存服务器缓存经过压缩的页面
  62. gzip_vary on;
  63. gzip_proxied expired no-cache no-store private auth;
  64. gzip_disable "MSIE [1-6]\."; # IE6浏览器不启用压缩
  65. #limit_conn_zone $binary_remote_addr zone=perip:10m;
  66. ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
  67. server_tokens off;
  68. access_log off;
  69. # 定义日志格式
  70. log_format up_head '$remote_addr - $remote_user [$time_local] "$request" '
  71. '$status $body_bytes_sent "$http_referer" '
  72. '"$http_user_agent" "$http_x_forwarded_for" "deviceid: $http_deviceid"'
  73. '"$request_body" $upstream_response_time "$request_time"';
  74. include vhost/*.conf;
  75. }

vhost/test.conf

server {
    listen 80;
    listen 443 ssl;
    server_name www.test.com;

    ssl_certificate      /nginx/conf/https/www.test.com.crt;
    ssl_certificate_key  /nginx/conf/https/www.test.com.key;
    root   /www/www.test.com;
    index  index.html index.htm index.php;

    location ~^/test.php {
          default_type    application/json;
          return 404 '{404}';
          access_log off;
    }

    location ~ ^/test/status(.*)$
    {
        default_type text/html;
        access_log /log/nginx/access/dot.log;
        return 200 '';
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~\.php$ {
            # 如果用到 sock 则值参考 unix:/var/run/php/php7.0-fpm.sock
            fastcgi_pass             unix:/tmp/php-cgi.sock;
            fastcgi_index            index.php;
            fastcgi_param            SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include                  fastcgi_params;
            access_log /log/nginx/access/access.log up_head;
     }

    # 静态文件
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d; # 对于静态文件,需要设置一个过期时间,
                                                # 这样可以让这些资源缓存到客户端浏览器,
                                                  # 在缓存未失效前,客户端不再向服务期请求相同的资源,
                                                # 从而节省带宽和资源消耗。
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /.well-known {
        allow all;
    }

    location ~ /\.
    {
        deny all;
    }
    # 隐藏敏感文件
    location ~ .*\.(txt|sql|md|json|lock)$
    {
        deny all;
    }

    error_log /log/nginx/error/error.log;
}