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:高性能HTTP和反向代理服务器简介

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:高性能HTTP和反向代理服务器简介

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和反向代理服务器简介的主要内容,如果未能解决你的问题,请参考以下文章

Centos6.5 Nginx负载均衡和测试

Ngnix反向代理与负载均衡[转]

Nginx代理

Ngnix技术研究系列1-通过应用场景看Nginx的反向代理

基于windows的ngnix基础使用

Windows7下安装搭建Ngnix教程和配置详解