使用Nginx搭建WEB服务器

简介:

一、Nginx概述:

Nginx (发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对并发连接的高处理能力(单台物理服务器可支持30000~50000个并发连接), 是一个高性能的 HTTP 反向代理服务器,也是一个IMAP/POP3/SMTP 代理服。


Apache服务器和nginx的优缺点:
   我们之前大量使用Apache来作为HTTPServerApache具有很优秀的性能,而且通过模块可以提供各种丰富的功能。
1)首先Apache对客户端的响应是支持并发的,运行httpd这个daemon进程之后,它会同时产生多个子进程/线程,每个子进程/线程分别对客户端的请求进行响应;

Apache两种工作模式:prefork模式与worker模式

prefork每个子进程只有一个线程,效率高但消耗内存大,是lunix下默认的模式;worker模式每个子进程有多个线程,内存消耗低,但一个线程崩溃会牵连其它同子进程的线程。

2)另外,Apache可以提供静态和动态的服务,例如对于PHP的解析不是通过性能较差的CGI实现的而是通过支持PHP的模块来实现的(通常为mod_php5,或者叫做apxs2)
3)缺点:
因此通常称为Apache的这种Serverprocess-based server,也就是基于多进程的HTTPServer,因为它需要对每个用户请求创建一个子进程/线程进行响应;
这样的缺点是,如果并发的请求非常多(这在大型门户网站是很常见的)就会需要非常多的线程,从而占用极多的系统资源CPU和内存。因此对于并发处理不是Apache的强项。
4)解决方法:
目前来说出现了另一种WebServer,在并发方面表现更加优越,叫做asynchronousservers异步服务器。最有名的为NginxLighttpd。所谓的异步服务器是事件驱动程序模式的event-driven,除了用户的并发请求通常只需要一个单一的或者几个线程。因此占用系统资源就非常少。这几种又被称为lightweight web server。举例,对于10,000的并发连接请求,nginx可能仅仅使用几M的内存;而Apache可能需要使用几百M的内存资源。
使用Apache来作为HTTPServer的情况我这里不再多做介绍;上面我们介绍到Apache对于PHP等服务器端脚本的支持是通过自己的模块来实现的,而且性能优越。
我们同样可以使用nginx或者lighttpd来作为HTTPServer来使用。
nginxApache类似都通过各种模块可以对服务器的功能进行丰富的扩展,同样都是通过conf配置文件对各种选项进行配置。对于PHP等,nginx没有内置的模块来对PHP进行支持,而是通过FastCGI来支持的。
nginx则没有自己提供处理PHP的功能,需要通过第三方的模块来提供对PHP进行FastCGI方式的集成。


、编译安装Nginx软件

目前Nginx的最新稳定版本为1.0.8,开发版本为1.1.6,其安装文件可以从官方网站http://www.nginx.org下载,下面以稳定版为例,介绍nginx的安装步骤。

1、安装支持软件:

   Nginx的配置及运行需要pcrezlib等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保Nginx的安装顺利完成。

[root@localhost /]#yum -y install pcre-devel zlib-devel

2、创建运行用户、组:

   Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。

[root@localhost /]#useradd -M -s /sbin/nologin nginx

3、编译安装nginx

[root@localhost /]#tar zxf nginx-1.0.8.tar.gz -C /usr/src/

[root@localhost /]#cd /usr/src/nginx-1.0.8

[root@localhost nginx-1.0.8]#./config --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.0.8]#make && make install

[root@localhost /]#ln -s /usr/local/nginx/sbin/* /usr/local/sbin

注:配置前可以参考:./configure  --help给出说明

--prefix:设定Nginx的安装目录

--user—group:指定Nginx运行用户和组

--with-http_stub_status_module:启用http_stub_status_module模块以支持状态统计


四、编写nginx启动脚本

1、检查配置文件

apache的主程序httpd类似,Nginx的主程序也提供了”-t”选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件nginx.conf默认位于安装目录下的conf/子目录中。若要检查位于其他位置的配置文件,可使用”-c”选项来指定路径。

233209167.jpg

2、启动、停止nginx

   直接运行nginx即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加”-c  配置文件路径选项来指定路径。需要注意的是,若服务器中已安装有httpd等其他WEB服务软件,应采取措施避免部突。

233222366.jpg

235749225.jpg

   当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行控制。

[root@localhost /]#killall -9 nginx

3、编写nginx启动脚本

   为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfigservice工具来进行管理,也更加符合RHEL系统的管理习惯。

[root@localhost /]#vim /etc/init.d/nginx

234558694.jpg

[root@localhost /]#chmod +x /etc/init.d/nginx

[root@localhost /]#chkconfig --add nginx

这样一来,就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。


五、修改nginx.conf配置文件

   在Nginx服务器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置这三大块内容,配置语句的格式为关键字值;”(末尾以分号表示结束),以”#”开始的部分表示注释。

1、全局配置:由各种配置语句组成,不使用特定的界定标记。全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

000059815.jpg

2、I/O事件配置:使用”events {}”界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置。

000253352.jpg

3、HTTP配置:使用”http{}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以及虚拟主机、PHP解析等一系列设置。其中大部分配置语句包含在子界定记”servier {}”内。

000716106.jpg

由于内容太多就不一一解释了,大家可以自行研究。


六、配置状态统计以及虚拟主机

1、nginx的访问状态统计

   Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情况。配置

编译参数时可添加—with-http_stub_stastus_module来启用此模块。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf文件,指定访问位置并打开stub_status配置。在http{}配置的server{}子配置内添加如下配置项。

001450427.jpg

重启服务,在浏览器中输入URL访问如下:

[root@localhost /]#service nginx restart

001516874.jpg

2、配置基于域名的虚拟主机

使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的”server {}”配置段,各自

监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。

例如:要创建两个站点www.benet.comwww.accp.com为两个虚拟WEB主机分别建立根目录,并准备测试首页。

001855174.jpg

配置两个”server {}”区域,分别对应两个WEB站点,指定各自的网站名称、监听地址、网站根目录、访问日志等信息,然后重载配置。

002456376.jpg


重启服务,在浏览器中分别输入不同域名,访问不同的网站。

[root@localhost /]#service nginx restart

003203913.jpg



本文转自yun5277 51CTO博客,原文链接:http://blog.51cto.com/dengqi/1290292,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
26 0
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
29天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
42 0
|
6天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
11天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
56 2
|
1月前
|
机器学习/深度学习 Python
Python基础:构建一个简单的Web服务器
Python基础:构建一个简单的Web服务器
54 1
|
1月前
|
应用服务中间件 Apache nginx
web后端-web服务器对比
web后端-web服务器对比
|
1月前
|
SQL JSON 应用服务中间件
web后端-win-phpMySql-nginx-web发布
web后端-win-phpMySql-nginx-web发布