96818 发表于 2018-11-8 10:13:34

关于一些nginx的高级扩展应用

  nginx.conf 配置解释

[*]  详解user   www www;
[*]  定义 Nginx 运行的用户及组
[*]  worker_processes 8; #[ debug | info | notice | warn | error | crit ]
[*]  error_log /data1/logs/nginx_error.log crit; pid
[*]  /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process.
[*]  worker_rlimit_nofile 65535;
[*]  一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit
[*]  -n) nginx 进程数相除,与但是 nginx 分配请求并不是那么均匀,所以最好与 ulimit -n的值保持一致。
[*]  # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
[*]  events use epoll; 参考事件模型
[*]  worker_connections 65535; 每个进程最大连接数(最大连接=连接数 x 进程数) #设定 http 服务器
[*]  http include
[*]  mime.types; 文件扩展名与文件类型映射表
[*]  default_type application/octet-stream; #默认文件类型
[*]  #charset gb2312; 默认编码
[*]  server_names_hash_bucket_size 128; #服务器名字的 hash 表大小
[*]  client_header_buffer_size 32k; 上传文件大小限制
[*]  large_client_header_buffers 4 32k; 设定请求缓
[*]  client_max_body_size 8m; 设定请求缓
[*]  sendfile on; #开启高效文件传输模式
[*]  tcp_nopush
[*]  on; 防止网络阻塞
[*]  tcp_nodelay on; 防止网络阻塞
[*]  keepalive_timeout 60; 超时时间
[*]  #FastCGI 是为了改善网站的性能--减少资源占用,提高访问速度.有关 fastCGI 的
[*]  详细资料请参阅:http://www.fastcgi.com
[*]  fastcgi_connect_timeout 300;
[*]  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 128k;
[*]  gzip on;
[*]  gzip_min_length 1k; #最小压缩文件大小
[*]  gzip_buffers
[*]  4 16k; #压缩缓冲区
[*]  gzip_http_version 1.0;
[*]  #压缩版本(默认 1.1,前端为 squid2.5 使用 1.0
[*]  gzip_comp_level 2; 压缩等级
[*]  gzip_types
[*]  text/plain application/x-javascript text/css application/xml;
[*]  压缩类型,默认就已经包含 text/html 所以下面就不用再写了,当然写上去的话,也
[*]  不会有问题,但是会有一个 warn
[*]  gzip_vary on;
[*]  #limit_zone crawler $binary_remote_addr 10m; server listen   80;
[*]  server_name www.opendoc.com.cn
[*]  index index.html index.htm index.php;
[*]  root /data0/htdocs/opendoc;
[*]  location ~ .*\.(php|php5)?$ #fastcgi_pass unix:/tmp/php-cgi.sock;
[*]  fastcgi_pass 127.0.0.1:9000;
[*]  fastcgi_index index.php;
[*]  include fcgi.conf; #对图片缓存
[*]  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ expires 30d; #对 JS CSS 缓存
[*]  location ~ .*\.(js|css)?$ expires1h; #日志设定
[*]  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 /data1/logs/access.log access;
[*]  }
  nginx判断手机移动设备用户的方法
  有两种方法
  一种是用语言进行判断,比如用php的 $_SERVER['User-Agent']

[*]  
  还有一种是用nginx的来判断

[*]  if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
[*]  // 添加你需要处理的语句,比如rewrite等
[*]  }
  可能一些设备可能没有识别的,大家可以看分析日志,然后把 User-Agent的关键字写到if里面~
  nginx的配置文件if语句是不支持“并且”和“或者”这样的多重条件判断的。在一些情况下,我们又需要if语句进行多个条件的判断,那么如何来实现呢?我们可以利用nginx的set语句设置变量的方法来解决。
  假设我们需要对 /123/ 路径进行rewrite,但同时要排除 /123/images/ 路径不对该路径进行rewrite,可以采用下面的解决办法:

[*]  set $doRewrite "0";
[*]  if ($request_uri ~ ^/123/) {
[*]  set $doRewrite "1";
[*]  }
[*]  if ($request_uri ~ ^/123/images/) {
[*]  set $doRewrite "0";
[*]  }
[*]  if ($doRewrite = "1") {
[*]  // do rewrite
[*]  }
  还有一个实例
  这个意思是   判断真是的ip,然后根据ip做一些操作~这里用的map映射

[*]  map $http_x_forwarded_for $deny_access {
[*]  default   0;
[*]  1.2.3.4   1;
[*]  1.2.3.5   1;
[*]  1.2.3.6   1;
[*]  }
[*]  if ($deny_access = 1) {
[*]  return 403;
[*]  }
  防盗链的一些个配置

[*]  location ~* \.(gif|png|jpg|bmp|swf|flv)$ {
[*]  valid_referers none blocked www.ruifengyun.com ruifengyun.com;
[*]  if ($invalid_referer) {
[*]  return 403;
[*]  }
[*]  }
  以上的例子可以实现扩展名为 gif,png,jpg,bmp,swf,flv的url防止被盗链。如果你需要其它的url防止被盗链,添加相应的后缀即可。
  也可以 把return 403 替换成 #rewrite ^/ http://ruifnegyun.com/404.jpg;   这样可以用另一种方法推广自己的网站
  nginx的限速的规则
  配置简单,只需3行

[*]  http{
[*]  ……
[*]  limit_zone one $binary_remote_addr 10m;
[*]  ……
[*]  server {
[*]  location / {
[*]  ……
[*]  limit_conn one 2;
[*]  limit_rate 40k;
[*]  }
[*]  }
[*]  }
  意思是:limit_zone针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。limit_conn指定每个访客只能建立两条链接,limit_rate限制每条链接的速度不超过40K。所以,以上配置限制用户访问此站点总速度上限为80K。


页: [1]
查看完整版本: 关于一些nginx的高级扩展应用