nginx是目前第二大web服务器,第一当然是apache了。
正如nginx的CEO所说,这两种服务器所面向的用户不同,各有所长。
Apache
- rewrite,比nginx的rewrite强大
- 动态页面,处理动态请求比nginx强大,一般动态请求由apache去做,nginx只适合静态和反向
- 模块多,基本想到的都能找到
- 少bug,nginx的bug相对较多
nginx
- nginx比Apache更轻量,同样起web服务,比apache占用更少的内存及资源,支持更多的并发连接,体现了更高的效率,这点使nginx尤其受到虚拟机提供商的欢迎。在高并发的情况下,nginx是Apache不错的替代品。nginx最多同时支持50000个并发连接访问数的响应,这归功于nginx为我们选择epoll and kqueue作为开发模型。
- 抗并发,nginx处理请求是异步非阻塞的,而Apache是阻塞的,在高并发的情况下,nginx能保持低资源低消耗高性能
- 高度模块化的设计,编写模块相对简单
- 社区活跃
- nginx本身就是一个反向代理服务器
- 负载均衡能力突出,nginx即可以在内部直接支持Rails和PHP程序对外进行服务,nginx采用C语言编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.
核心区别就是:apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
以上的区别是摘抄的,博客地址
博客中还有nginx的安装教程,可以学习一下。
说说我在安装中遇到的问题。
下载并安装所有的依赖之后,要启动nginx时出现了错误。
image.png
根据报错信息98: Address already in use,我猜测可能是端口被占用,上网一查果然如此。
-
使用lsof -i :80命令查看,80端口被哪些程序占用了。
image.png - 使用sudo kill 端口号,我的是1798,22305。此命令用来杀死进程
然后再次使用lsof -i :80查看80端口信息,发现进程已经被杀死。 -
然后输入命令来启动nginx, /usr/local/nginx/sbin/nginx
image.png
4.为了验证我们是否启动成功,再次查看80端口信息。
image.png
当然,我们可以访问服务器了,输入域名后按回车,我们会发现页面变成了图中那样,可以暂时告一段落了。
image.png
网友评论