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

[经验分享] 欢迎来到Nginx配置文件的世界

[复制链接]
YunVN网友  发表于 2018-11-15 09:49:35 |阅读模式
  Welcome:
  漫漫长夜中茁壮成长的Nginx业已成为Web服务器中比较流行的软件,虽然现在Apache占大部分主流,但Nginx始终是个小趋势:原因就在于Nginx支持更大的并发量,比较适用高性能高并发的生产环境中;而Apache则比较适用于高稳定性的开发环境当中.两个Web服务器软件之间的关系只能说是各司其职,各为其主罢了.说到Web服务器,微软的IIS是大家最熟悉不过的,它可以通过向导搭建服务,这对于初学者来说比较容易接受,但在我看来,冷冰冰的命令行才是我的最爱(he he).今天我们来说说Nginx的配置文件吧.对于部署安装的话,大家可以去百度一下~~
  
  Begin:
  Nginx是模块化设计的软件,主配置文件中有很多关键字组成,每个关键字后都带 {} 中括号将参数包含起来,而参数就没有{}中括号。
  软件我一般会安装在/usr/local/ 下,所以我的配置文件在/usr/local/nginx/conf/nginx.conf (默认的我就不显示出来了)         
  注意!:注意关键字插入的位置,注意空格位置。我在这里所说明的,只是对应关键字应该插入的位置以及关键字与参数的作用和关系,
  只供参考使用,因为有些关键字和参数并不能共存,有些却是联系在一起的。
  stream {                                                    //基于TCP/UDP的调度.以ssh为例,所需模块stream
  upstream backed-ssh {
  server 192.168.2.100:22;
  server 192.168.2.200:22;
  }
  server {
  listen 12345;
  proxy_pass backed-ssh;
  }
  }
  http {
  worker_processes 1;                            //工作的线程数,此数越高,消耗的资源越大,处理的请求数越快,一般与CPU核心数量一致;
  worker_connections 65536;                //每个worker最大并发连接数,最大是65536;
  client_header_buffer_size 1k;             //默认请求包头信息的缓存,解决URL太长的问题;
  client_body_buffer_size  1K;               //此指令设置用于请求主体的缓冲区大小;
  client_max_body_size 1k;                    //此指令设置用于请求主体的最大缓冲区大小;
  large_client_header_buffers 4 1m;     //大请求包头部信息的缓存个数与容量,将URL设置为4个1M大小,即使是很大的URL请求也不报401;
  
  server_tokens off;                                //不显示版本号,保证服务器相对安全,防止***找到漏洞
  net.ipv4.tcp_syncookies=1;                //表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认为0,表示关闭;
  
  net.ipv4.tcp_fin_timeout = 1              //如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT-2  状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是 60 秒。2.2  内核的通常值是 180 秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的 WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN-  WAIT-2 的危险性比 FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些;
  
  net.ipv4.tcp_syn_retries = 1               //在内核放弃建立连接之前发送SYN包的数量;
  net.ipv4.tcp_synack_retries = 1         //为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量;
  gzip on;                                                //开启压缩,提高传输速度;
  gzip_min_length 1000;                        //小文件不压缩,因为对于小文件来说没必要压缩,压缩完后反而会更大;
  gzip_comp_level 4;                              //压缩比率;
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;                                        //对特定文件压缩,类型参考mime.types;
  
  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;            //限制并发量;  
  upstream webserver {
  ip_hash;                                            //可以让相同客户端访问相同web服务器,因为调度器调度后端的服务器有N台,有时要规定哪个客户端要访问特定服务器;
  server 套接字(ip:port) [weight=1..] [max_fails=1..] [fail_timeout=20..];    //这是添加一个后端服务器的基本语法格式;max_fails表示最大失败访问次数.默认1,尝试连接一次;ail_timeout表示访问失败停滞时间.一但访问失败后,N秒后才恢复访问.(客户机在N秒内不访问它);
  
  server 192.168.0.1:80 weight=1 max_fails=1 fail_timeout=20;                 //这是一个示例;
  server 192.168.0.2:8080 weight=2;                                                       //这是另一个示例,但监听在8080,我们都知Tomcat;
  ...                                                                                                           //可以添加N个server;
  }
  server{
  listen 80;
  server_name localhost;
  limit_req zone=one burst=5;
  error_page    404    /404.html;                   //可自定义错误页面(404为例),将注释去掉,再换成自己想要的网页文件就可以 ;
  location / {
  root html;
  index index.php index.html index.htm;              //限制并发量;
  if ($request_method !~ ^(GET|POST)$) {            //只允许GET|POST方法请求数据,拒绝非法连接;
  return 444;
  }
  }
  location ~* \.(jpg|png)$ {
  expires 30d;                                        //期满时间,定义客户端对于以.jpg或.png结尾的文件只缓存30天;
  }
  location ~\.php$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;             //跳转到本机的服务器.调用PHP-fpm 实现动态解析;
  fastcgi_index index.php;
  }
  location / {
  proxy_pass webserver;                     //调度器调度的后端服务器的upstream组的名字;一旦客户来访问服务器,会直接调webserver组中的服务器,这时本机充当调度器的角色;
  }
  location /status {
  stub_status on;//需要添加模块:http_stub_status_module: Web服务器状态,设置完成后,在浏览器中输入 http://127.0.0.1/status  就可以看到服务器的状态信息;
  }
  if ($http_user_agent ~* firefox) {
  rewrite ^/(.*) /xx/$1 break|last|redirect|permament;    //地址重写,注意!if是一种条件;这段的意思是如果是用firefox来访问的客户端就将其地址重写到网页根目录的xx目录下;
  }
  }
  }
  
  
  Make-Up:
  
  http_ssl_module:    Nginx的ssl模块,可以支持https协议,在数据传输中加密传输;
  
  假设你已经搭建了Nginx并配置好了http_stub_status_module模块,在访问http://127.0.0.1/status时会看到以下参数:
  Active connections:当前活动的连接数量;
  Accepts:已经接受客户端的连接总数量。
  Handled:已经处理客户端的连接总数量(一般与accepts一致,除非服务器限制了连接数量)。
  Requests:客户端发送的请求数量。
  Reading:当前服务器正在读取客户端请求头的数量。
  Writing:当前服务器正在写响应信息的数量。
  Waiting:当前多少客户端在等待服务器的响应。
  
  
  END:
  其实说这么多,对于Nginx我是认识的不多,但不难发现,只要有哪些不懂的,大家都可以上官网查一下;比如Nginx模块的作用是什么,调度器究竟是什么,都是在官网可以查看到的;好了,我要睡觉去了。。。。
  
  
  
  
  


运维网声明 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.yunweiku.com/thread-635296-1-1.html 上篇帖子: nginx keepalived 检测N中方法 下篇帖子: Nginx之基本配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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