Nginx (一)简介和基本的功能作用

Nginx是一个高性能的HTTP和反向代理服务器,以其热部署、高并发处理、低内存消耗和高可靠性著称。它可以作为静态HTTP服务器,反向代理服务器实现负载均衡和虚拟主机功能,并支持FastCGI与PHP等语言配合。Nginx的配置灵活,易于安装和维护,是大规模网站和应用的首选解决方案。
部署运行你感兴趣的模型镜像

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

1、热部署

我个人觉得这个很不错。在master管理进程与worker工作进程的分离设计,使的Nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级Nginx的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。

2、可以高并发连接

这是一个很重要的一个特性!在这一个互联网快速发展, 互联网用户数量不断增加, 一些大公司、网站都需要面对高并发请求,如果有一个能够在峰值顶住10万以上并发请求的Server,肯定会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于你的内存,10万远未封顶。

3、低的内存消耗

在一般的情况下,10000个非活跃的HTTP Keep-Alive 连接在Nginx中仅消耗2.5M的内存,这也是Nginx支持高并发连接的基础。

4、处理响应请求很快

在正常的情况下,单次请求会得到更快的响应。在高峰期,Nginx可以比其他的Web服务器更快的响应请求。

5、具有很高的可靠性

Nginx是一个高可靠性的Web服务器,这也是我们为什么选择Nginx的基本条件,现在很多的网站都在使用Nginx,足以说明Nginx的可靠性。高可靠性来自其核心框架代码的优秀设计、模块设计的简单性;并且这些模块都非常的稳定。

 

Nginx Web服务器优点

 

Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:

(1)在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue作为开发模型.

(2)Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.

(3)作为邮件代理服务器: Nginx Web服务器同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.

(4)Nginx Web服务器是一个 安装非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.

 

 

1、静态HTTP服务器

首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

配置:

server {  
    listen 80; # 端口号  
    location / {  
        root /usr/share/nginx/html; # 静态文件路径  
    }  
}  

2、反向代理服务器

什么是反向代理?

客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

配置:

server {  

    listen 80;  

    location / {  

        proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址  

    }  

}  

既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?继续往下看,下面的负载均衡、虚拟主机等,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

3、负载均衡

当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

Nginx可以通过反向代理来实现负载均衡。

upstream myapp {  

    server192.168.20.1:8080; # 应用服务器1  

    server192.168.20.2:8080; # 应用服务器2  

}  

server {  

    listen80;  

    location / {  

        proxy_pass http://myapp;  

    }  

}  

 

以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理。可以通过ip-hash的方式,根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理。

配置:

upstream myapp {  

    ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理  

    server 192.168.20.1:8080;  

    server 192.168.20.2:8080;  

}  

server {  

    listen 80;  

    location / {  

        proxy_pass http://myapp;  

    }  

}  

 

另外,服务器的硬件配置可能有好有差,想把大部分请求分配给好的服务器,把少量请求分配给差的服务器,可以通过weight来控制。 

配置:


upstream myapp {  

    server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求  

    server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求  

}  

server {  

    listen80;  

    location / {  

        proxy_pass http://myapp;  

    }  

}  

4、虚拟主机

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:

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 {  

    listen80;  

    server_name www.bbb.com; # www.bbb.com域名  

    location / {  

        proxy_pass http://localhost:8081; # 对应端口号8081  

    }  

}  

 

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

5、FastCGI

Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理(例如PHPPython、Perl)。

server {  

    listen 80;  

    location ~ \.php$ {  

        include fastcgi _params;  

        fastcgi_param SCRIPT_FILENAME /PHP文件路径$fastcgi_script_name; # PHP文件路径  

        fastcgi_pass 127.0.0.1:9000; # PHP-FPM地址和端口号  

        # 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;  

    }  

}  

 

配置中将.php结尾的请求通过FashCGI交给PHP-FPM处理,PHP-FPM是PHP的一个FastCGI管理器。

在这里插入图片描述
关注我吧!微信号同步更新,随时随地都可以获取干货,关注公众号免费领取1TJava学习资料
All the code you ever write is business logic.

 

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值