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

[经验分享] nginx简述

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-11-13 11:58:35 | 显示全部楼层 |阅读模式
  一、nginx是什么
  Nginx (engine x) 是一个高性能的HTTP和反向代理服
  务器,也是一个IMAP/POP3/SMTP服务器。Nginx是
  由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站
  点(俄文:Рамблер)开发的,第一个公开版本0.1.0
  发布于2004年10月4日。
  其将源代码以类BSD许可证的形式发布,因它的稳定性
  、丰富的功能集、示例配置文件和低系统资源的消耗而
  闻名。2011年6月1日,nginx 1.0.4发布。
  Nginx是一款轻量级的Web 服务器/反向代理服务器及
  电子邮件(IMAP/POP3)代理服务器。其特点是占有
  内存少,并发能力强,事实上nginx的并发能力确实在
  同类型的网页服务器中表现较好,中国大陆使用nginx
  网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
  二、nginx特性
  跨平台: Nginx 可以在大多数 Unix like OS编译运行, 而且也有Windows
  的移植版本。 配置异常简单, 非常容易上手。 配置风格简单, 神一般的配
  置易读性
  高并发连接: 数据复制时, 官方测试能够支撑5万并发连接, 在实际生产环
  境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)通信
  机制采用epoll模型, 支持更大的并发连接。
  master/worker结构: 一个master进程, 生成一个或多个worker进程
  功能模块化: nginx的内部结构是由核心部分和一系列的功能模块所组成
  。 这样划分是为了使得每个模块的功能相对简单, 便于开发, 同时也便于
  对系统进行功能扩展。
  成本低廉: Nginx可实现负载均衡功能, 可以免费使用。 而购买F5 BIG-IP
  、 NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
  内置的健康检查功能: 如果 Nginx Proxy 后端的某台 Web 服务器宕机了,
  不会影响前端访问。
  节省带宽: 有缓存模块, 支持 GZIP 压缩, 可实现浏览器本地缓存的
  Header 头。
  稳定性高: 用于反向代理(负载均衡) , 宕机的概率微乎其微
  Nginx的特性Nginx的架构Nginx的模块流程图
  Nginx模块主要有4种角色:
  (1) core(核心模块):构建
  nginx基础服务、管理其他模块。
  (2) handlers(处理模块): 用于
  处理HTTP请求,然后产生输出。
  (3) load-balancers(负载均衡
  模块):当有多于一台的后端备选
  服务器时,选择一台转发HTTP请
  求。
  (4) filters(过滤模块): 过滤
  handler产生的输出。21
  Nginx安装方式
  nginx安装常用两种方式,yum安装和源码包安装
  yum 安装:通常是在线安装,好处是安装方式简单,不易出错;常
  用的安装yum源为epel
  源码包安装:是先将 nginx 的源码下载下来,在自己的系统里编译
  生成可执行文件,然后执行,好处是因为是在自己的系统上编译的,
  更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务
  性能效率更好。(推荐,需要安装开发环境)
  区别:路径和启动方式不同,支持的模块也不同
  三、nginx的模块
  Nginx模块主要有4种角色:
  (1) core(核心模块):构建
  nginx基础服务、管理其他模块。
  (2) handlers(处理模块): 用于
  处理HTTP请求,然后产生输出。
  (3) load-balancers(负载均衡
  模块):当有多于一台的后端备选
  服务器时,选择一台转发HTTP请
  求。
  (4) filters(过滤模块): 过滤
  handler产生的输出。
  四、Nginx安装方式
  nginx安装常用两种方式,yum安装和源码包安装
  yum 安装:通常是在线安装,好处是安装方式简单,不易出错;常
  用的安装yum源为epel
  源码包安装:是先将 nginx 的源码下载下来,在自己的系统里编译
  生成可执行文件,然后执行,好处是因为是在自己的系统上编译的,
  更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务
  性能效率更好。(推荐,需要安装开发环境)
  区别:路径和启动方式不同,支持的模块也不同。
  五、nginx的配置
  主配置文件: nginx.conf
  扩展相关配置文件: include conf.d/*.conf
  协议配置: fastcgi, uwsgi, scgi等协议相关的配置文件
  类型配置: mime.types: 支持的mime类型
  六、主配置文件结构
  main : #主配置段, 也即全局配置段; 正常运行必备配置
  优化性能配置, 用于调试和定位的配置。
  event {
  ...
  }; 事件驱动相关的配置;
  http {
  ...
  }; http/https 协议相关的配置段;
  七、Nginx配置文件讲解
  nginx的主配置文件路径一般在
  /etc/nginx/nginx.conf下(yum安装
  ) 或
  者源码安装指定位置的conf目录
  下, 如
  /usr/local/nginx/conf/nginx.conf
  配置文件主要配置设置:
  main(全区设置)
  http(协议配置)
  upstream(负载均衡服务器设置)
  和server、 location(URL匹配特定
  位置设置)
  1) 全局配置
  #Nginx的worker进程运行用户以及用户组
  user nobody nobody;
  #Nginx开启的进程数
  worker_processes 2;
  worker_processes auto;
  #也可以下参数指定了哪个cpu分配给哪个进程,
  #worker_processes 4 #4核CPU
  #worker_cpu_affinity 0001 0010 0100 1000
  #定义全局错误日志定义类型, [debug|info|notice|warn|crit]
  error_log logs/error.log info;
  #指定进程ID存储文件位置
  pid logs/nginx.pid;
  2) 服务配置
  非虚拟主机的配置或公共配置, 需要定义在server之外, http之内;
  http {
  directive value;
  ...
  server {
  }s
  erver {
  }
  ...
  }}必
  须使用虚拟主机来配置站点; 每个虚拟主机使用一个server {}段配置;
  server {
  }
  3)http段参数介绍
  1. #文件扩展名与文件类型映射表
  2. include mime.types;
  3. #默认文件类型
  4. default_type application/octet-stream;
  6.#日志相关定义
  7. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  8. # '$status $body_bytes_sent "$http_referer" '
  9. # '"$http_user_agent" "$http_x_forwarded_for"';
  10. #定义日志的格式。 后面定义要输出的内容。
  11. #1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
  12. #2.$remote_user : 用来记录客户端用户名称;
  13. #3.$time_local : 用来记录访问时间与时区;
  14. #4.$request : 用来记录请求的url与http协议;
  15. #5.$status : 用来记录请求状态;
  16. #6.$body_bytes_sent : 记录发送给客户端文件主体内容大小;
  17. #7.$http_referer : 用来记录从那个页面链接访问过来的;
  18. #8.$http_user_agent : 记录客户端浏览器的相关信息
  19. #连接日志的路径, 指定的日志格式放在最后。
  20. #access_log logs/access.log main;
  21. #只记录更为严重的错误日志, 减少IO压力
  22. error_log logs/error.log crit;
  http段参数介绍30
  26. #默认编码
  27. #charset utf-8;
  28. #服务器名字的hash表大小
  29. server_names_hash_bucket_size 128;
  30. #客户端请求单个文件的最大字节数
  31. client_max_body_size 8m;
  32. #指定来自客户端请求头的hearerbuffer大小
  33. client_header_buffer_size 32k;
  34. #指定客户端请求中较大的消息头的缓存最大数量和大小。
  35. large_client_header_buffers 4 64k;
  36. #开启高效传输模式。
  37. sendfile on;
  38. #防止网络阻塞
  39. tcp_nopush on;
  40. tcp_nodelay on;
  41. #客户端连接超时时间, 单位是秒
  42. keepalive_timeout 60;
  43. #客户端请求头读取超时时间
  44. client_header_timeout 10;
  45. #设置客户端请求主体读取超时时间
  46. client_body_timeout 10;
  47. #响应客户端超时时间
  48. send_timeout 10;
  50.#FastCGI相关参数是为了改善网站的性能: 减少资源占用, 提高访问速度。
  51. fastcgi_connect_timeout 300;
  52. fastcgi_send_timeout 300;
  53. fastcgi_read_timeout 300;
  54. fastcgi_buffer_size 64k;
  55. fastcgi_buffers 4 64k;
  56. fastcgi_busy_buffers_size 128k;
  57. fastcgi_temp_file_write_size 128k;
  59.#gzip模块设置
  60. #开启gzip压缩输出
  61. gzip on;
  62. #最小压缩文件大小
  63. gzip_min_length 1k;
  64. #压缩缓冲区
  65. gzip_buffers 4 16k;
  66. #压缩版本(默认1.1, 前端如果是squid2.5请使用1.0)
  67. gzip_http_version 1.0;
  68. #压缩等级 1-9 等级越高, 压缩效果越好, 节约宽带, 但CPU消耗大
  69. gzip_comp_level 2;
  70. #压缩类型, 默认就已经包含text/html, 所以下面就不用再写了, 写上去也不会有问题, 但是会有一个warn。
  71. gzip_types text/plain application/x-javascript text/css application/xml;
  72. #前端缓存服务器缓存经过压缩的页面
  73. gzip_vary on;
  4)虚拟主机相关介绍
  虚拟主机相关的配置:
  1、 server {}
  定义一个虚拟主机; nginx支持使用基于主机名或IP的虚拟主机;
  2、 listen
  listen address[:port];
  listen port
  default_server: 定义此server为http中默认的server; 如果所有的server中没有任何一个
  listen使用此参数, 那么第一个server即为默认server;
  3、 server_name [...];
  server_name可以跟多个主机名, 名称中可以使用通配符和正则表达式(通常以~开头); 当
  nginx收到一个请求时, 会取出其首部的server的值, 而后跟众server_name进行比较;
  比较优先次序方式:
  (1) 先做精确匹配; www.magedu.com
  (2) 左侧通配符匹配; *.magedu.com
  (3) 右侧通配符匹配; www.abc.com, www.*
  (4) 正则表达式匹配: ~^.*\.magedu\.com$
  test.test.magedu.com
  test.magedu.com/text
  www.taobao.com
  5)文件路径定义相关介绍
  server段内
  1、 root path
  设置web资源路径; 用于指定请求的根文档目录;
  location / {
  root /www/htdocs;(本机的文件路径)
  }lo
  cation ^~ /images/ {
  root /web;
  } 2
  、 alias path
  只能用于location中, 用于路径别名;
  location / {
  root /www/htdocs;
  }lo
  cation ^~ /images/ {
  alias /web/;
  }
  6)虚拟主机相关介绍
  (1)location [ = | ~ | ~* | ^~ ] uri { ... }
  (2)location @name { ... }
  功能: 允许根据用户请求的URI来匹配指定的各location以进行访
  问配置; 匹配到时, 将被location块中的配置所处理
  =: 精确匹配;
  ~: 正则表达式模式匹配, 匹配时区分字符大小写
  ~*: 正则表达式模式匹配, 匹配时忽略字符大小写
  ^~: URI前半部分匹配, 匹配时忽略字符大小写。 不检查正则表达
  式 匹
  配优先级:
  = (大于) ^~ (大于) ~ (大于) 不带符号
  7)文件路径定义相关介绍
  (1) index file ...;
  定义默认页面, 可参跟多个值;
  (2) error_page code ... [=[response]] uri;
  错误页重定向: 当对于某个请求返回错误时, 如果匹配上了
  error_page指令中设定的code, 则重定向到新的URI中。
  错误页面重定向;
  例: error_page 404 /404.html;当用户请求一个不存在的资源
  是, 会自动跳转到自定义的404.html页面。
  注意跳转的状态码还是原来的状态码, 即使是跳转成功!


运维网声明 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-634559-1-1.html 上篇帖子: Nginx基础入门之nginx编译参数说明介绍 下篇帖子: nginx后端节点服务器健康检查二
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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