什么是Nginx
Nginx (engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP(邮件)服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开的版本0.1.0发布于2004年6月1日。2011年6月1日,nginx 1.0.4发布。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网页等。在全球活跃的网站中有12.18%的使用比例,大约为2220万个网站。
Nginx是一个安装非常简单、配置文件非常简洁(且能支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24h不间断运行,即使运行数个月也不需要重新启动。你还能不间断服务的情况下进行软件版本的升级。
nginx的代码是完全使用C语言开发。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
Nginx的作用
1、正向代理
正向代理类似一个跳板机,代理访问外部资源。
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器(VPN),请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了。
2、反向代理
对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。
3、负载均衡
在访问量较多的时候,可以通过负载均衡(load balance),将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,既保证服务的可用性,又保证响应足够快,给用户很好的体验;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性。
Nginx提供了三种负载均衡内置策略:轮询、加权轮询、Ip hash。
轮询:
加权轮询:
ip hash:
ip hash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
4、动静分离
动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应的速度。
目前,通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!
Nginx的安装
安装Windows版本
http://nginx.org/en/download.html 下载稳定版本,直接下载 nginx/Windows-1.22.1 解压即可。
启动nginx
方法一:直接双击nginx.exe,双击后一个黑色的弹窗一闪而过(不推荐)
方法二:打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe
,回车即可(推荐)
检查nginx是否启动成功
直接在浏览器地址栏输入网址 http://localhost:80 (80是默认端口,可以不写)回车,出现以下页面说明启动成功!
安装Linux版本
http://nginx.org/en/download.html 下载稳定版本,手动下载.tar.gz安装包。
# 下载安装包
[root@wyc src]# wget http://nginx.org/download/nginx-1.22.1.tar.gz
# 解压
[root@wyc src]# tar -zxvf nginx-1.22.1.tar.gz
Nginx常用命令
./nginx # 启动
./nginx -s stop # 停止(强制)
./nginx -s quit # 安全退出
./nginx -s reload # 重新加载配置文件
ps aux|grep nginx # 查看nginx进程
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具
2、--permanent:表示设置为持久
3、--add-port:标识添加的端口
Nginx配置
# 全局配置
......
events {
# events配置
worker_connections 1024;
}
http {
# http配置
upstream wycstudy{
# 负载均衡,服务器资源
server 127.0.0.1:8080 weight=5; # 负载均衡配置 weight为权重,weight=1为默认轮询
server 127.0.0.1:8081 weight=1;
}
server {
listen 80;
server_name localhost;
# 代理
location / {
root html;
index index.html index.htm;
proxy_pass http://wycstudy; # 反向代理配置
}
}
server {
listen 443;
server_name localhost;
# 代理
location / {
root html;
index index.html index.htm;
}
}
}