一、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安装与配置

每个系统安装和配置的方式都不一样

  1. 在CentOS系统上安装Nginx:

    yum install -y epel-release
    yum install -y nginx
    
    
  2. 在Ubuntu系统上安装Nginx:

    sudo apt-get update
    sudo apt-get install -y nginx
    
  3. 在Windows上安装Nginx:

    1. 下载

      首先去官网下载最新的稳定版本:官网下载点我 (opens new window) 下载后解压打卡: 你会看见一下目录。

      在这里插入图片描述

    2. 启动

      启动方式一:双击nginx.exe,双击后你能看见一个小黑窗口一闪而过。 启动方式二:打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe/start nginx ,回车即可

      注意:如果安装目录是中文的情况,打开exe文件时会报错

    3. 检查是否安装成功

      打开浏览器:浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

      在这里插入图片描述

    4. 配置监听

      nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。 当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

    5. 关闭Nginx

      如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

      1. 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
      2. 使用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基本使用

  1. 启动Nginx
systemctl start nginx
  1. 停止Nginx
systemctl stop nginx
  1. 重启Nginx
systemctl restart nginx
  1. 查看Nginx状态

    systemctl status nginx
    

# 七、Nginx应用场景

  1. 静态资源服务器 Nginx可作为静态资源服务器,用于加速图片、CSS、JS等文件的上传和下载。

  2. 负载均衡 Nginx可实现负载均衡,将请求分发到多台后端服务器,提高网站访问速度和稳定性。