nginx配置文件详解

nginx配置文件详解

user www www;  #配置用户或者组,默认为nobody nobody。
worker_processes auto; #允许生成的进程数,默认为1

error_log /data/wwwlogs/error_nginx.log crit; #错误日志
pid /var/run/nginx.pid; #指定nginx进程运行文件存放地址
worker_rlimit_nofile 51200; #指定一个nginx进程可以打开的最多文件描述符数目

events {
  use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  worker_connections 51200; #最大连接数,默认为512
  multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
}

http {
  include mime.types; #文件扩展名与文件类型映射表
  default_type application/octet-stream; #默认文件类型,默认为text/plain
  server_names_hash_bucket_size 128;  #保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.
  client_header_buffer_size 32k; #与client_body_buffer_size类似。 它为请求头分配一个缓冲区。 如果请求头大小大于指定的缓冲区,则使用large_client_header_buffers指令分配更大的缓冲区
  large_client_header_buffers 4 32k; #规定了用于读取大型客户端请求头的缓冲区的最大数量和大小。 这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区。
  client_max_body_size 1024m; #设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX发回HTTP 413(Request Entity too large)错误。 如果服务器处理大文件上传,则该指令非常重要。
  client_body_buffer_size 10m; #此指令设置用于请求主体的缓冲区大小。
  log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义日志格式
  sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
  tcp_nopush on;
  sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
  keepalive_timeout 120; #连接超时时间,默认为75s,可以在http,server,location块。
  server_tokens off;
  tcp_nodelay on;
  autoindex on; #开启nginx目录浏览功能
  autoindex_exact_size off; #文件大小从KB开始显示
  autoindex_localtime on;   #显示文件修改时间为服务器本地时间
  
  
  fastcgi_connect_timeout 300; #指定nginx与后端fastcgi server连接超时时间
  fastcgi_send_timeout 300;    #指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
  fastcgi_read_timeout 300;    #指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)
  fastcgi_buffer_size 64k;     #指定nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小
  fastcgi_buffers 4 64k;       #指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值, 如果站点大部分php脚本产生的页面为:256kb, 那么可以设置成成"8 16k  4 64k"
  fastcgi_busy_buffers_size 128k; #整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍
  fastcgi_temp_file_write_size 128k; #写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍
  fastcgi_intercept_errors on; #开启error_page跳转页面

  #Gzip Compression
  gzip on;               #开启gzip
  gzip_buffers 16 8k;    #缓冲(压缩在内存中缓冲几块? 每块多大?)
  gzip_comp_level 6;     #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
  gzip_http_version 1.1; #开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
  gzip_min_length 256;   #开始压缩的最小长度(再小就不要压缩了,意义不在)
  gzip_proxied any;      #设置请求者代理服务器,该如何缓存内容
  gzip_vary on;          #是否传输gzip压缩标志
  gzip_types             #对哪些类型的文件用压缩 如txt,xml,html ,css
    text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
    text/javascript application/javascript application/x-javascript
    text/x-json application/json application/x-web-app-manifest+json
    text/css text/plain text/x-component
    font/opentype application/x-font-ttf application/vnd.ms-fontobject
    image/x-icon;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #正则匹配UA 什么样的Uri不进行gzip

 
  open_file_cache max=1000 inactive=20s; #max=1000 表示设置缓存文件的最大数目为 1000, 超过此数字后 Nginx 将按照 LRU 原则丢弃冷数据。inactive=20s 与 open_file_cache_min_uses 2 表示如果在 20 秒内某文件被访问的次数低于 2 次,那就将它从缓存中删除。
  open_file_cache_valid 30s; #这个是指多长时间检查一次缓存的有效信息。也就是说即使我一直访问这个文件,30s后会检查此文件的更改信息是否变化,发现变化就更新。
  open_file_cache_min_uses 2; #指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件更改信息一直是在缓存中打开的。
  open_file_cache_errors on; #指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。


  server {
    listen 80;
    server_name _;
    access_log /data/wwwlogs/access_nginx.log combined; #访问日志
    root /data/wwwroot/default;
    index index.html index.htm index.php;

    #错误跳转页面
    error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 /error.html;
    location /error.html {
      root /data/www/wwwroot; #指定error.html文件所在目录
    }

    location /nginx_status {
      stub_status on; #开启Nginx的一些状态信息
      access_log off; #关闭访问日志
      allow 127.0.0.1; #允许一个ip或者ip段访问
      deny all; #禁止一个ip或者ip段访问
    }

    location ~ [^/]\.php(/|$) {
      #fastcgi_pass 127.0.0.1:9000; #表示nginx通过fastcgi_pass将用户请求的资源发给127.0.0.1:9000进行解析,这里的nginx和php脚本解析服务器是在同一台机器上,所以127.0.0.1:9000表示的就是本地的php脚本解析服务器。
      fastcgi_pass unix:/dev/shm/php-cgi.sock;
      fastcgi_index index.php; #默认首页文件
      include fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
      expires 30d; #数据缓存30天  s秒 m分 h小时 d天
      access_log off;
    }

    location ~ .*\.(js|css)?$ {
      expires 7d;
      access_log off;
    }

    location ~ /\.ht {
      deny all;
    }
  }
   include vhost/*.conf; #引入配置文件
}

access_log   #用来指定日志文件的路径及使用的何种日志格式记录日志
error_log    #用来知道错误日志文件的路基及使用何种级别记录日志,常见的错误日志级别有[debug | info | notice 

配置Thinkphp

server {
    listen 80;
    server_name tp3.xx.cn;
    access_log /data/wwwlogs/access/tp3.log main;
    error_log  /data/wwwlogs/error/tp3.log error;
    index index.html index.htm index.php;
    root /data/wwwroot/tp3;

    #错误跳转页面
    error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 /error.html;
    location /error.html {
        root /data/www/wwwroot;
    }

    location / {
     index  index.htm index.html index.php;
     if (!-e $request_filename) {
     rewrite  ^(.*)$  /index.php?s=$1  last;
     break;
      }
    }

    location ~ [^/]\.php(/|$) {
      #fastcgi_pass remote_php_ip:9000;
      fastcgi_pass unix:/dev/shm/php-cgi.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
      expires 30d;
      access_log off;
    }

    location ~ .*\.(js|css)?$ {
      expires 7d;
      access_log off;
    }

    location ~ /\.ht {
      deny all;
    }
  }

配置laravel

server {
  listen 80;
  server_name laravel.xx.cn;
  access_log /data/wwwlogs/access/laravel.log combined;
  error_log  /data/wwwlogs/error/laravel.log error;
  index index.html index.htm index.php;
  root /data/wwwroot/laravel/public;

  add_header X-Frame-Options "SAMEORIGIN"; #表示该页面可以在相同域名页面的frame中展示,DENY表示该页面不允许在frame中展示,ALLOW-FROM url表示指定该页面可以在指定源的fram中展示
  add_header X-XSS-Protection "1; mode=block"; #如果找到XSS,则不要渲染文档
  add_header X-Content-Type-Options "nosniff";  #对script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
  
  
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  
  location = /favicon.ico { access_log off; log_not_found off; } #访问favicon.ico文件时关闭访问日志,并且不在error_log中记录不存在的错误
  location = /robots.txt  { access_log off; log_not_found off; } #访问robots.txt文件时关闭访问日志,并且不在error_log中记录不存在的错误

  location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$; #Nginx默认获取不到PATH_INFO的值,得通过fastcgi_split_path_info指定定义的正则表达式来给$fastcgi_path_info赋值。
      fastcgi_pass unix:/dev/shm/php-cgi.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
  }

  location ~ /\.(?!well-known).* {
      deny all;
  }
}

配置phalcon

server {
      listen 80;
      server_name phalcon.xx.cn;
      access_log /data/wwwlogs/access/phalcon.log combined;
      error_log  /data/wwwlogs/error/phalcon.log error;
      root /data/wwwroot/phalcon/public;
      index index.html index.htm index.php;

      location / {
         try_files $uri $uri/ /index.php?_url=$uri&$args;
      }

      location ~ [^/]\.php(/|$) {
        #fastcgi_pass remote_php_ip:9000;
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
      }

      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
        expires 30d;
        access_log off;
      }

      location ~ .*\.(js|css)?$ {
        expires 7d;
        access_log off;
      }

      location ~ /\.ht {
        deny all;
      }
 }

你可能感兴趣的:(运维)