Ngnix:高性能HTTP和反向代理服务器简介
Posted 开源文摘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ngnix:高性能HTTP和反向代理服务器简介相关的知识,希望对你有一定的参考价值。
点击上 方蓝字「开源文摘」一键关注
nginx (发音同"engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。目前(2017年4月),最新稳定版本为1.12.0.
Nginx的特点是占有内存少,并发能力强。中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx的优势
1.支持高并发连接
由于apache采用的是select网络I/O模型,Ngnix在处理大量连续高并发访问时效率要比Apache高很多。可通过top命令可以查看系统负载和CPU使用率
2.内存消耗少
在服务器3W并发连接下,开启10个Nginx进程消耗150MB内存(15MB*10),开启64个php-cgi进程消耗128MB内存(20MB*64),共消耗不到2GB内存。可以使用压力测试工具webbench对Nginx进行压力测试。
3.成本低廉
购买F5 BIG-IP、NetScaler等负载均衡交换机需要几十万RMB,而开源Nginx替代这些商业设备。
4.支持热部署
能够在不间断服务的情况下、对软件版本进行升级
5.配置简单
6.其他优势
支持rewrite重写规则,能够根据域名、URL的不同、将HTTP请求分发到不同的后端服务器群组;内置的健康检查功能;节省带宽,支持GZIP压缩,可以添加浏览器本地缓存的Header头。
Nginx作为静态HTTP服务器
与Apache类似,Ngnix可以作为静态的HTTP服务器,将服务器上的静态文件(如html、图片)通过HTTP协议展现给客户端。
示例配置:
server {
listen 80; # 端口号
location / {
root /usr/share/nginx/html; # 静态路径
}
}
Nginx作为反向代理服务器
客户端(即浏览器)可以通过HTTP协议直接访问网站应用服务器。如果网站管理员在中间加上一个Nginx,客户端请求发送给Nginx服务器,Nginx再向网站应用服务器发送请求,然后Ngnix再将请求的结果返回给客户端,此时Nginx充当反向代理服务器。
示例配置:
server {
listen 80;
location / {
proxy_pass http://192.168.0.112:8080;
Ngnix作为负载均衡器
当网站访问量非常大时,单台服务器已经无法满足访问需求。负载均衡器可以将相同的Web应用部署在多台服务器上,把大量用户的请求分配给多台机器处理。当其中一台服务器失效(死机或者关机),只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现上述负载均衡器的效果。
示例配置:
upstream myapp {
server 192.168.0.111:8080; # 应用服务器1
server 192.168.0.112:8080; # 应用服务器2
}
server {
listen 80;
location / {
proxy_pass http://myweb;
}
}
Ngnix作为虚拟主机
与Apache类似,Ngnix也可以通过HTTP请求头中的Host是否匹配server_name来实现的虚拟主机。
server {
listen 80 default_server;
server_name _;
return 444;
# 过滤其他域名的请求,返回444状态码
}
server {
listen 80;
server_name www.aaa.com;
# www.aaa.com域名
location / {
proxy_pass http://localhost:8080;
# 对应端口号8080
}
}
server {
listen 80;
server_name www.bbb.com;
# www.bbb.com域名
location / {
proxy_pass http://localhost:8081;
# 对应端口号 8081
}
}
通过FASTCGI支持动态脚本语言
与Apache类似,Nginx本身不支持PHP等动态脚本编程语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理(例如PHP、Python、Perl)。
示例配置:配置中将.php结尾的请求通过FashCGI交给PHP-FPM处理。PHP-FPM是PHP的一个FastCGI管理器。
server {
listen 80;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /PHP文件路径$fastcgi_script_name;
# PHP文件路径
fastcgi_pass 127.0.0.1:9000;
# 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
fastcgi_pass和proxy_pass有什么区别
关注开源文摘,每天五分钟轻松成为开源技术专家!
以上是关于Ngnix:高性能HTTP和反向代理服务器简介的主要内容,如果未能解决你的问题,请参考以下文章