浅谈nginx(一)

此文主要介绍nginx的基础知识及其基本配置,一为巩固,二为记录

知识点

  • nginx的作用
  • nginx的基本配置框架
  • nginx一些常用模块介绍

1、什么是nginx

    nginx是一款免费的,开源的,高性能的HTTP服务软件,它不仅能
    够支持反向代理服务器,而且也能当作IMPA/POP3代理服务。它稳
    定, 配置丰富,设置简单,而且占用系统硬件资源少!这些特性
    使得它深受广大用户喜欢。

1.1 Nginx的程序架构

Nginx架构: master/worker

  • 一个主进程master:负责加载和分析配置文件,管理worker,并且可以平滑升级;
  • 一个或多个worker:由master生成,处理并响应用户请求
  • 缓存相关进程:如cache loader、cache manager

特性:异步、事件驱动和非阻塞

  • 并发请求处理:通过kevent/epoll/select,/dev/poll
  • 文件IO:高级IO sendfile,异步,mmap

1.2 Nginx高度模块化

Nginx是一个高度模块化的程序,这高度模块化的思想使得Nginx拥有巨大的优越性。它的5个大模块分别为:核心模块(包含主模块main和事件模块event)标准HTTP模块可选HTTP模块MAIL邮件模块第三方模块

(1)核心模块

  • main:主要用于配置错误日志、进程管理、权限控制等;
  • event:配置epoll、kqueue、select、poll等;

(2)标准HTTP模块

  • 支持标准http功能

(3)可选http模块

  • 主要用于拓展标准http功能,让http能处理一些特殊的服务;

(4)邮件服务模块

  • 邮件服务模块使得Nginx能够处理或代理IMAP、POP3、SMTP协议

(5)第三方模块

  • Nginx的第三方模块使得自身的功能变得非常丰富;

2、nginx的安装及配置

在CentOS7下安装nginx
官方下载好安装包后,必须现装好pcre-devel、openssl-devel及
zlib-devel,安装Nginx依赖这三个包

2.1 编译安装:

        ~]# yum install pcre-devel openssl-devel zlib-devel
        ~]# useradd -r nginx
        ~]#  ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
        ~]# make && make install

2.2 配置:

Nginx配置文件存放位置:

主配置/etc/nginx/nginx.conf,主配置中会调用其他配置,其他配置文件放在/etc/nginx/include/conf.d/.conf*(任意以.conf结尾的文件都是)

主配置文件结构:~]#vim /etc/nginx/nginx.conf
            main block:主配置段,也即全局配置段;
                event {
                    ...
                }:事件驱动相关的配置;
            http {
                ...
            }:http/https 协议相关的配置段;
            mail {
                ...
            }
            stream {
                ...
            }

        http协议相关的配置结构
            http {
                ...
                ...:各server的公共配置
                server {
                    ...
                }:每个server用于定义一个虚拟主机;
                server {
                    ...
                    server_name
                    root
                    alias
                    location [OPERATOR] URL {
                        ...
                        if CONDITION {
                            ...
                        }
                    }
                }
            }
2.2.1 main程序段的相关配置

分类:

  • 正常运行必备的配置

    1. 定义user  :user  nginx;
    2. 定义pid文件路径,指定nginx主进程号码的文件路径:pid  /var/run/nginx.pid;
    3. include file | mask,指明包含进来的其他配置文件:include   /etc/nginx/conf.d/*.conf;
    4. load_module file指明要装载的动态模块:load_module modules/ngx_http_geoip_module.so;
  • 优化性能相关的配置
    1. 定义worker进程的数量,通常应该为当前主机的cpu的物理核心数:worker_processes  1;
    2. worker_cpu_affinity CPU MASK,使用cpu内核,可定义为auto
             CPU MASK:
                        00000001:0号CPU
                        00000010:1号CPU
    例:worker_cpu_affinity  00000001 00000100;# 使用第1号和第3号cpu
    3. worker_priority number,指定worker进程的nice值,设定worker进程优先级;默认[-20,20]
    4. worker_rlimit_nofile number,worker进程所能够打开的文件数量上限;
  • 用于调试及丁文问题相关的配置
    1. daemon on|off,是否以守护进程方式运行Nignx;
    2. master_process on|off,是否以master/worker模型运行nginx;默认为on;
    3. error_log file [level];
2.2.2事件驱动相关的配置
    events {
            ...
    }

1. worker_connections number,每个worker进程所能够打开的最大并发连接数数量;
    nginx所能承受的最大客户连接数量 = worker_processes * worker_connections
2. use method,指明并发连接请求的处理方法;
    例:use epoll;        # 
3. accept_mutex on | off,处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;

2.2.3 http相关配置段

基本格式:

        http {
                ... ...
                server {
                    ...
                    server_name
                    root
                    location [OPERATOR] /uri/ {
                        ...
                    }
                }
                server {
                    ...
                }
            }

***ps:由于http相关配置下server段中涉及的模块略多,所以另开篇幅------浅谈Nginx(二)-------http下server配置***

时间: 2024-10-30 00:28:13

浅谈nginx(一)的相关文章

【转】浅谈Nginx负载均衡与F5的区别

前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之初都会为高并发的数据请求做负载均衡,不差钱的土豪用户一般会直接买F5硬件设备作为其负载均衡器,原因不用多

浅谈Nginx负载均衡与F5的区别

转自:http://www.cnblogs.com/brookzhang/p/6600861.html 前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之

浅谈Nginx(二)—http下server配置

此文介绍Nginx下的http模块,着重介绍http模块下的server服务 --------依据"马哥教育"主讲人马永亮导师的上课笔记整理------- 目录  一. http相关的基本配置:     1) listen                2) server_name           3) tcp_nodelay     4) sendfile      二. 定义路径相关的配置:     1)root path     2)location     3)alias 

[转自SA]浅谈nginx的工作原理和使用

nginx apache 简单对比 nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃 配置简洁 apache 相对nginx 的优点: rewrite ,比 nginx 的 rewrite 强大 模块超多 少 bug ,nginx 的 bug 相对较多 超稳定 配置复杂

浅谈Nginx服务器的内部核心架构设计

前言Nginx 是一个 免费的,开源的,高性能 的 HTTP 服务器和 反向代理,以及 IMAP / POP3 代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.Nginx是一个 Web 服务器,也可以用作 反向代理,负载均衡器 和 HTTP 缓存. 很多高知名度的网站都使用 Nginx,如:Netflix,GitHub,SoundCloud,MaxCDN 等.正文 Nginx的整体架构1.1. 主进程 Nginx 启动时,会生成两种类型的 进程*,一个是

浅谈nginx处理事件原理

nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器,作为HTTP服务器的后起之秀,相比较于web服务器软件老大哥Apache有着很大的改进地方,主要在性能方面NGINX占用的系统资源更少,支持更多的并发连接数(特别是在静态小文件场景下),达到更高的访问效率.在功能上NGINX不但是个优秀的web服务器软件,还具有反向代理负载均衡,相当于LVS,Haproxy.缓存服务器相当于Squid等专业的缓存服务器软件Nginx的负载均衡模块采用两种方法:轮转法:它处理请求就像纸牌游戏一

浅谈——页面静态化

现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存:2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高:3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来:4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可:5,分布式缓存,使用memc

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜

浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 全Socket层(SSL)等等,目前互联网主要使用它做静态资源服务器,也可以做代理服务器转发请求(如:图片链等),结合tomcat等 servlet容器处理jsp.1.2.ngnix     —— 俄罗斯人开发的一个高性能的 HTTP和反向代理服务器.由于Nginx 超越 Apache 的高性能和稳