比较早的时候  web主要经典组合--->LAMP

近几年---->nginx后来居上--->LNMP=LEMP   Nginx = Engine x

Nginx和Apache 都是对静态网页进行展示一个平台

如果想要解析动态的网页--->php--->php引擎

Nginx和Apache 调用使用PHP时完全不同的

一、Nginx的简介

1)Nginx  = Engine X ,俄罗斯人发明,开源的www服务软件, 780K+

2)Nginx本身是一款静态(Html,css,js,jgp等等)www软件

3)特点: 和Apache在静态网页处理上  处理静态小文件(1M)高并发更占优势

同时占用的资源少    3W并发(PV IP UV)10个线程 只消耗150M内存

4)Nginx使用在多平台: Unix  Linux Windows等都可以

类Unix--->IOS系统(Cisco)

Linux系统---->Android

         BSD

二、Nginx的功能

a) 可以用于web服务 支持www  --->LNMP环境

b)负载均衡(反向代理)

c)web cache (web缓存)--->varnish

三、Nginx的优点:

1.配置简单,灵活

2.高并发(静态小文件),静态1-3W

3.占用的资源少,  3W并发--->10个线程--->消耗100+多内存

4.功能种类很多(web  负载/代理  cache)  但是每一个功能都不是最好的

5.支持epoll模型,---->使用nginx支持高并发的核心

6.Nginx配置动态服务和apache 有区别的

7.利用Nginx 对IP进行限速,可以限制连接数

web网站实际最大链接   同时允许多少用户链接

当Nginx收到web请求  分辨动静  如果是静态web--->自己处理

如果是动态---> 把请求发送给PHP服务器处理

四、LAMP 和LNMP的实现原理架构

面试题: 请问apche和Nginx运行使用php时有什么区别

Apache 是模块化---结合在一起的

Nginx是服务化 --- 独立的

五、Nginx的应用场景:

1.静态服务器(图片 视频等业务),html  js  css  .flv等  并发达到3W

Apche竞争

2.动态服务器 Nginx是利用FastCGI的方式运行PHP,JSP    并发数:500-1500

Apache+php竞争

3.反向代理 负载均衡

日PV(浏览量 刷新一次增加一次)2000W一下  都可以使用nginx做代理

Haproxy  F5 A10都可以做负载/反向代理

4.缓存服务

Squid  Varnish

六、Nginx和其他主流的web服务器 进行对比

1)Apache

1)2.2版本非常稳定 强大的版本

2.4性能更强--->官方网站(手册)--->apr部署

2)prefork模式取消了进程创建开销,性能更高

prefork使用进程  worker使用线程(更稳定)

3)处理动态业务数据时,因为关联到后端的引擎和数据库,瓶颈不在于apache本身, 在于PHP引擎和数据大小

4)高并发消耗资源相对多一些

5)基于传统的select模式

6)非常多的扩展库,通过Apxs插入

2)Nginx

基于异步IO模型(epoll模型),性能强,支持上完高并发

对小文件支持--静态

代码更优美  扩展库必须编译到主程序中

消耗资源少

3)Lighttpd(贴吧 豆瓣--python编写的)

基于异步IO模型,性能和Nginx相仿

扩展库比Nginx更灵活安装

安全性不高

通过插件可以实现URL加密

网站www.baidu.com

我把自己的ip网站---->嫁接到www.baidu.com上--->访问百度就是访问我

dan给处理动态数据   三者差距不到 apache 更具备优势

php一般支持的并发量---300-1000之间

Java                               500-1300之间

为什么Nginx总体性能比apache高?

1.Nginx使用最新的epoll模型和kqueue的网络IO模型

Apache 使用传统的select模型

2.目前Linux下能够承受高并发访问squid  memcache--->都使用epoll模型

处理连续的大量的读写

Select----> 每个请求  挨个尝试找到对应 的服务

Epoll   告诉每个请求 服务在哪 自己去寻找响应

如何选择WEB服务器:

静态业务:高并发、采用nginx,lighttpd,根据自己的掌握程度或公司的要求。

动态业务:采用nginx和Apache均可。

既有静态业务又有动态业务:nginx或Apache,不要多选要单选。

动态业务可以由前端代理(haproxy),根据页面元素的类型,向后转发相应的服务器进行处理。

思想:我们工作都不要追求一步到位,满足需求的前提下,先用,然后逐步完善。

提示:nginx做web(Apache,lighttpd)、反向代理(haproxy,lvs,nat)及缓存服务器(squid)也是不错的。

最终建议:对外的业务nginx,对内的业务Apache(yum httpd mysql-server php)。

Apache制作虚拟主机---->标签<VirtualHost> </VirtualHost>

Nginx制作虚拟主机 ----> 标签  server {}

七、Nginx实战部署---->源码编译

现在官网:http://nginx.org/en/download.html

1)下载  解压  部署

./configure --prefix=/applicaiton/nginx-1.12.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module

会出现问题:

1.缺c语言的编译环境

2.缺少缺少openssl库和缺少pcre库

解决:

安装 gcc gcc-c++ openssl-devel prce-devel

make  && make install

2)启动与测试Nginx

需要创建nginx用户

useradd -s /sbin/nologin -M nginx

否则会出现[emerg] getpwnam("nginx") failed

Nginx-入门(源码编译安装http://nginx.org/en/download.html)的更多相关文章

  1. [nginx] 从源码编译安装NGINX

    nginx通过rpm包进行的安装和配置: [web][nginx] 初识nginx -- 使用nginx搭建https DPI解码测试环境 现在,要通过源码进行安装. 参考:https://nginx ...

  2. Centos7通过yum跟源码编译安装Nginx

    源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...

  3. Linux系统 - 源码编译安装Nginx

    什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...

  4. Nginx 最新版源码编译安装 包含常用模块作用及所需依赖

    第一部分 Nginx最新版源码编译安装 1. 使用的模块 模块1:http_rewrite_module 基于正则匹配来实现重定向.依赖PCRE库,见依赖1 模块2:http_gzip_module ...

  5. CentOS7 源码编译安装Nginx

    源码编译安装nginx     1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...

  6. 源码编译安装nginx及设置开机启动项

    1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x

    笔记 2.源码编译安装Redis4.x     简介:使用源码安装Redis4.x和配置外网访问 1.快速安装  https://redis.io/download#installation      ...

  8. Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置

    文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...

  9. Centos7源码编译安装PHP7.2(生产环境)

    安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...

随机推荐

  1. 叶子的颜色---经典树上dp

    挺简单的一个dp #include<iostream> #include<cstring> #include<cstdio> #include<algorit ...

  2. k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船

    非常非常抱歉,新年上班第一天, 在今天阿里云上气候突变情况下,由于我们开船技术差,在今天 10:15~12:00 左右的访问高峰,我们竟然把船给开翻了,造成近2个小时整个博客站点无法访问,由此给您带来 ...

  3. Mysql库、表、记录的基本操作

    库的操作 ---> 类似于文件夹 - 增: 创建数据库: create database db1; 创建带字符集的数据库: create database db2 charset=utf8; - ...

  4. MySQL 核心三剑客 —— 索引、锁、事务

    一.常见存储引擎 1.1 InnoDB InnoDB 是 MySQL 5.5 之后默认的存储引擎,它具有高可靠.高性能的特点,主要具备以下优势: DML 操作完全遵循 ACID 模型,支持事务,支持崩 ...

  5. iOS获取网络数据/路径中的文件名

    NSString * urlString = @"http://www.baidu.com/img/baidu_logo_fqj_10.gif"; //方法一:最直接 NSStri ...

  6. Java 解析Exception信息

    最近的项目需要捕获系统抛出的异常,并将异常信息保存,记录以下解析Exception的方法. 异常详细信息 这里说的“异常详细信息”指的是平时打印到控制台的那种信息,如下图 获取方法: package ...

  7. Nginx 究竟如何处理事件?

    在了解了网络事件以及事件分发收集器以后,让我们来了解 Nginx 是怎么样处理事件的? Nginx 事件循环 当 Nginx 刚刚启动时,在等待事件部分,也就是打开了 80 或 443 端口,这个时候 ...

  8. Sample Code之Take a screenshot of a SceneView

    周末事情太多了,以后就工作日发布随笔吧.周末的话,看心情,也许也会发~ 今天的实例代码解析是Take a screenshot of a SceneView,也就是获取快照,话不多说,进入正题. 首先 ...

  9. 【转】DB2数据库编目的概念以及对其的正确解析

    此文章主要向大家描述的是DB2数据库编目的概念以及对DB2数据库编目的概念的正确理解,在DB2中编目(catalog)这个单词看似很难理解,我自己当初在学习DB2数据库的时候也常常被这个编目搞的很不明 ...

  10. must appear in the GROUP BY clause or be used in an aggregate function

    今天在分组统计的时候pgsql报错 must appear in the GROUP BY clause or be used in an aggregate function,在mysql里面是可以 ...