是一款服务器
轻量级的Web服务器,也是反向代理服务器,也是电子邮件(IMAP/POP3)代理服务器
特点是:占有内存少,并发能力强
ngnix的并发能力在同类型的web服务器中表现较好
使用ngnix的网站有:百度,京东,新浪,网易,腾讯,淘宝
然后直接解压即可
现在介绍在linux系统上安装ngnix
1.安装gcc环境
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2.下载Nginx安装包:
wget https://ngnix.org/download/nginx-1.23.2.tar.gz
3.解压
tar -zxvf nginx-1.23.2.tar.gz
4.cd nginx-1.23.2
5.创建nginx 目录 mkdir -p /usr/local/nginx
6.指定安装位置
./configure --prefix=/usr/local/nginx //这表示将安装到/usr/local/nginx 文件夹里
7.安装nginx
make && make install
此时进入/usr/local/nginx就可以进入nginx的路径了
- [root@localhost nginx]# tree
- .
- ├── conf
- │ ├── fastcgi.conf
- │ ├── fastcgi.conf.default
- │ ├── fastcgi_params
- │ ├── fastcgi_params.default
- │ ├── koi-utf
- │ ├── koi-win
- │ ├── mime.types
- │ ├── mime.types.default
- │ ├── nginx.conf
- │ ├── nginx.conf.default
- │ ├── scgi_params
- │ ├── scgi_params.default
- │ ├── uwsgi_params
- │ ├── uwsgi_params.default
- │ └── win-utf
- ├── html
- │ ├── 50x.html
- │ └── index.html
- ├── logs
- └── sbin
- └── nginx
nginx配置环境变量
打开配置文件:
vim /etc/profile
PATH=/usr/local/nginx/sbin:$PATH
Nginx命令:
先进入/usr/local/nginx/sbin
(1)查看nginx版本
- [root@localhost]# nginx -v
- nginx version: nginx/1.23.2
(2)启动nginx
[root@localhost]# nginx
启动ngnix服务后,你就可以在浏览器中输入虚拟机的地址,就可以访问到nginx首页了(nginx默认占用80端口,80端口默认可以省略,所以直接输入服务器地址即可)
(3)查看nginx进程
- [root@localhost sbin]# ps -ef | grep nginx
- root 11031 1 0 23:06 ? 00:00:00 nginx: master process ./nginx
- nobody 11034 11031 0 23:06 ? 00:00:00 nginx: worker process
- root 11049 3055 0 23:07 pts/0 00:00:00 grep --color=auto nginx
前面两行重点关注,一个是master进程,一个是worker进程
(4)停止nginx服务
nginx -s stop
Ngnix具体应用:部署静态资源 ,反向代理,负载均衡
(1)使用Ngnix部署静态资源:
静态资源:html页面,css文件,js文件,图片,视频等资源
相对于tomcat,nginx处理静态资源的能力更加高效,所以一般会将静态资源部署到nginx中,将静态资源部署到ngnix非常简单,只需要使用拷贝命令将文件复制到nginx安装目录下的html目录中即可
cp 静态资源地址(比如/test/helloworld.html) nginx的html目录中(比如说/usr/local/nginx/html/)
此时你在本地浏览器上输入:(默认80端口)
http://192.168.58.130/helloworld.html
就可以访问到这个页面了
(2)反向代理
正向代理:在客户端和原始服务器(origin server)之间有一个代理服务器
客户端向代理服务器发送一个请求,并且指定原始服务器的地址,于是代理服务器向原始服务器转交请求,并将获得的内容返回给客户端
一般是在客户端设置代理服务器
比如你无法直接访问谷歌服务器,可以通过一个代理服务器(VPN)间接访问谷歌服务器
反向代理:在客户端不设置代理服务器,客户端也不用给反向代理服务器发送什么原始服务器的地址(这是正向代理和反向代理的最大区别),客户端直接向反向代理服务器发送请求
实际上,反向代理服务器还是会将请求转发给目标服务器
反向代理实际应用场景:无法直接访问web服务器1,web服务器2,web服务器3(这些服务器组成一个内网,局域网),于客户端通过反向代理服务器去访问这些web服务器
反向代理实现:
安装了nginx的服务器100作为反向代理服务器, 我们实际想要访问的是101这台机器
在反向代理服务器中进行配置:
进入ngnix的conf文件夹,打开nginx.conf文件:
- cd /usr/local/nginx/conf
- vim nginx.conf
将下面这段配置写入这个文件里:表示针对反向代理服务器82端口的请求会转发到101服务器的8080端口
- server
- {
- listen 82:
- server_name localhost;
- location/
- {
- proxy_pass http://192.168.138.101:8080#将请求转发到指定服务器端口
- }
- }
此时就可以通过访问100服务器的80端口间接访问101服务器的8080端口
(3)负载均衡
单台服务器变成服务器集群,服务器集群接收负载均衡器发送过来的请求
负载均衡其实是基于反向代理实现的:
当我们请求nginx这台服务器的时候,就会转发给服务器集群中的某一台服务器
- upstream targetserver#通过upstream指令定义一组服务器
- {
- server 192.168.138.101:8080;
- server 192.168.138.102:8080;
- }
-
- server
- {
- listen 8080;
- server_name localhost;
- location/
- {
- proxy_pass http://targetserver;//targetserver在上面定义
- }
- }
没有设置负载均衡策略,那就是默认采用
(1)轮询(轮流来)的算法
除了有轮询算法,还有其他算法:
(2)加权轮询:配置越好的分配到的请求越多
- upstream targetserver#通过upstream指令定义一组服务器
- {
- server 192.168.138.101:8080 weight=10;
- server 192.168.138.102:8080 weight=5;
- }
(3)IP_Hash:根据客户端发送过来的请求的IP地址,对这个IP地址进行哈希运算,然后对服务器节点的数量进行取模
upstream targetserver#通过upstream指令定义一组服务器
{
ip_hash;server 192.168.138.101:8080 ;
server 192.168.138.102:8080 ;
}
(4)url_hash
(5)least_connection
最少连接数,哪台服务器上连接数少就将请求转发到这台服务器上