(三)企业部分之lnmp环境的搭建:Nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由俄罗斯的程序设计师Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如京东、新浪、网易、腾讯、淘宝等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。


Nginx工作模式(转)

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

Nginx的模块从结构上分为核心模块、基础模块和第三方模块,HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基本模块,而HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。


Nginx的模块从功能上分为三类,分别是:

Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。handlers处理器模块一般只能有一个。

Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx 输出。

Proxies (代理类模块)。就是Nginx 的HTTP Upstream 之类的模块


在工作方式上,Nginx分为单工作进程和多工作进程两种模式。

在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;

在多工作进程模式下,每个工作进程包含多个线程。

Nginx默认为单工作进程模式。

Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像在Apache一样,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。


Nginx 通过事件驱动相应多个用户,使用一个工作线程来响应多个不同的用户请求 

prework 是一个进程响应一个用户请求 

worker是一个线程响应一个用户请求 

 

为此nginx适合于高并发的场景需求,并且nginx对静态内容响应较快,但是nginx不支持CGI 

在应用是nginx时,nginx主要是工作在web的前端,实现反向代理 


LNMP环境的搭建——Nginx

1.Nginx安装

所需软件包:nginx-1.8.0.tar.gz  

tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
yum install pcre-devel  openssl-devel  -y
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
make
make install
vim /root/.bash_profile

wKiom1de8Ivxw8IXAAAWhqxoR6o658.png


source /root/.bash_profile
cd /usr/local/lnmp/nginx/sbin/
./nginx -t    ##检测
./nginx    ##服务开启脚本
curl -I localhost    ##检测http协议提供程序


wKioL1ddhFyy5JzYAACE8tJW_OM069.png

 

##开机启动##

vim /etc/rc.local

在最后加上nginx

wKioL1dxHbXxDJteAACGOdAjAa4024.png


nginx -s
nginx -h


2.屏蔽nginx版本

rm  -rf  /root/nginx-1.8.0  /usr/local/lnmp/nginx
tar zxf nginx-1.8.0.tar.gz    ##重新解压nginx源码包
vim /root/nginx-1.8.0/src/core/nginx.h    ##伪装版本

将“nginx/”后面部分删除

wKiom1ddg77A-eGzAAAg9Ktyyz0879.png

 

vim /root/nginx-1.8.0/auto/cc/gcc    ##关闭debug调式

将debug部分注释掉

wKiom1ddg-7CA67LAAAMH9dGgEc841.png

 

cd nginx-1.8.0
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
make
make install

nginx -t     ##检测nginx配置
nginx -s reload     ##加载配置


wKioL1ddhTKwWsMEAACB-6GGaVU912.png

 

useradd -s /sbin/nologin -d /usr/local/lnmp/nginx nginx
vim /usr/local/lnmp/nginx/conf/nginx.conf
user  nginx nginx;    ##用户和组,可以只写用户
worker_processes  2;    ##cpu个数,不能超过lscup
events {
        use epoll;    ##nginx epoll 采用异步非阻塞模式 apache --select 同步阻塞机制 io复用模型类型
        worker_connections  4096;    ##连接数
}

 

wKioL1ddhZWi9ffAAABWa7TR-nk485.png

 

3.开启https

server这一段注释去掉,cert.key改为cert.pem(注意要在{}内)

wKiom1ddhFGDhX_vAABO7GtHmmM140.png


cd /etc/pki/tls/certs/
make cert.pem


wKiom1ddhOqy2WcnAABwe7ma91w862.png


cp cert.pem /usr/local/lnmp/nginx/conf/
nginx -t
nginx -s reload


wKiom1ddhQ3if5tTAACSs3bKYGI345.png

 

 

4.nginx 监控小插件

vim /usr/local/lnmp/nginx/conf/nginx.conf

增加以下内容(##/status 名字自定义):

wKioL1ddhlWy9H0_AAANdVZI8_A849.png


nginx -t
nginx -s reload


访问 ip/status

wKiom1ddhWGgSQqlAAAyBd91T4o896.png

 

5.nginx 虚拟主机

/usr/local/lnmp/nginx/conf/nginx.conf最后加上以下部分(注意后面“}”):

wKioL1ddhpnADm6FAAA9FIQV2Qo287.png


mkdir /web{1..2}
echo www.linux.org > /web1/index.html
echo www.unix.org > /web2/index.html
nginx -t
nginx -s reload


wKioL1ddhyPytSmcAAAlWkRJcoE535.png

wKiom1ddhhbxXUV7AAAmbgXttMo071.png

 

6.nginx 负载均衡套件

server2server3做以下工作:

yum install httpd -y
cd /var/www/html/
echo server2/3.example.com > index.html

/usr/local/lnmp/nginx/conf/nginx.conf最后加上以下部分(注意后面那个括号):

wKiom1ddha7R0drUAAA8LlvkfB0367.png


 wKioL1ddh1OirihPAAA-ML6aGAA090.png


nginx -t 
nginx -s reload

访问www.linux.org 测试

wKioL1ddh72wOuKwAABz9DbBLbA599.png

wKiom1ddhrXCketgAAB86u71Hxc855.png

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章