设为首页 收藏本站
查看: 958|回复: 0

[经验分享] 关于一些nginx的高级扩展应用

[复制链接]

尚未签到

发表于 2018-11-8 10:13:34 | 显示全部楼层 |阅读模式
  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)?$ expires  1h; #日志设定
  •   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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632285-1-1.html 上篇帖子: 再次优化NGINX+php-fpm上传 下篇帖子: Cacti和Zabbix所需Nginx安装配置(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表