一、Nginx是什么?
# 一、Nginx是什么?
- Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器
- Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强
- Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
- Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。
# 二、Nginx的反向代理
正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)
反向代理: 那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)
# 三、Nginx的负载均衡
什么是负载均衡?
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
简单来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一个问题。
# 四、Nginx的动静分离!
# 五、Nginx安装与配置
每个系统安装和配置的方式都不一样
在CentOS系统上安装Nginx:
yum install -y epel-release yum install -y nginx
在Ubuntu系统上安装Nginx:
sudo apt-get update sudo apt-get install -y nginx
在Windows上安装Nginx:
下载
首先去官网下载最新的稳定版本:官网下载点我 (opens new window) 下载后解压打卡: 你会看见一下目录。
启动
启动方式一:双击nginx.exe,双击后你能看见一个小黑窗口一闪而过。 启动方式二:打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe/start nginx ,回车即可
注意:如果安装目录是中文的情况,打开exe文件时会报错
检查是否安装成功
打开浏览器:浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!
配置监听
nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。 当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效
关闭Nginx
如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx
- 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
- 使用
taskkill taskkill /f /t /im nginx.exe
Nginx配置文件
Nginx的配置文件位于/etc/nginx目录下,主要配置文件为nginx.conf。以下是一个简单的配置文件示例:
示例:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr -$remote_user [$time_local] "$request" '
'$status$body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
}
# 六、Nginx基本使用
- 启动Nginx
systemctl start nginx
- 停止Nginx
systemctl stop nginx
- 重启Nginx
systemctl restart nginx
查看Nginx状态
systemctl status nginx
# 七、Nginx应用场景
静态资源服务器 Nginx可作为静态资源服务器,用于加速图片、CSS、JS等文件的上传和下载。
负载均衡 Nginx可实现负载均衡,将请求分发到多台后端服务器,提高网站访问速度和稳定性。