#####################################
######### 高性能Web服务器Nginx #########
#####################################
主机环境: rhel6 selinux and iptables disabled
实验主机: Server1:172.25.27.1 作为Nginx服务器
Server2:172.25.27.2 作为Apache服务端
Server3:172.25.27.3 作为Apache服务端
一、LNMP
LNMP就是Linux系统下Nginx+Mysql+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
二、Nginx
1.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器。
三、Nginx和Apache简单对比:
1.Nginx相对Appaqi的优点:
- 轻量级,同样的web服务,比Apache占用更少的资源和内存;
- 抗并发,Nginx处理请求是异步非阻塞式,而Apache则是阻塞型。在高并发下,Nginx能保持低资源、低消耗、高性能;
- 高度模块化设计,编写模块相对简单;
- 社区活跃,各种高性能模块资源丰富;
- 代理功能强大;
2.Apache相对Nginx的优点:
- 比Nginx的rewrite(服务器的重写脉冲技术、支持URL重写)更强大;
- 模块超多,现有的模块基本能满足所有需求;
- 比Nginx稳定,bug率少。
3.Nginx与Apache应用场景对比:
- Apache适合跑动态,而Nginx适合跑静态和反向,但若静态文件较少,Apache的select模块比Nginx的epoll模块更好;
- Nginx适合于IO密集型服务,Apache适合与CPU密集型服务;
- 最好两者相结合,例如,lnmp架构,Nginx做前端服务器,处理静态文件请求,Apache做后端服务器,当客户发出动态文件请求时,Nginx的反向代理功能将请求转发到Apache。
4.轻量级、高并发原因:
- 对于Apache,每个请求都独占一个工作线程,并发数在几千,占用内存、CPU,降低性能;
- 对于Nginx,一个进程只有一个主线程,通过异步非阻塞事件处理机制,实现了循环处理多个准备好的事件,从而实现轻量级、高并发。
5.直接说明:
Apache属于专一性服务;
Nginx分阶进行,节省时间。
四、Nginx 服务器的搭建及配置
在server1做如下操作:
1.安装
tar zxf nginx-1.12.0.tar.gz # 解压软件包
useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin -u 800 nginx # 添加nginx用户
2.编译前修改一些文件
cd nginx-1.12.0/src/core/
vim nginx.h # 编辑nginx.h文件
14 #define NGINX_VER "nginx" # 修改此行,为了安全,这样编译后外界无法获取程序的版本号
cd /root/nginx-1.12.0/auto/cc/
vim gcc # 编辑gcc文件
171 # debug