nginx基础

157 阅读6分钟

基本概念

是什么?

高性能的HTTP和反向代理服务器

特点

占有内存少,并发能力强

反向代理

正向代理 在客户端配置代理服务器,通过代理服务器进行互联网访问。

反向代理 将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到耽搁服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器。

动静分离

静态资源(html、js、css)和动态资源(jsp、servlet)分开进行部署

原理

  • master worker

  • 一个master和多个worker的优势

      1.使用nginx-s reload热部署
      2.每个worker是独立的进程,不需要加锁
      3.worker和服务器的cpu数相等
    
  • worker_connection

      最大连接数=worker_connections*worker_processes
      访问静态资源:最大并发数=worker_connections*worker_processes/2
      反向代理:最大并发数=worker_connections*worker_processes/4
      
    

具体工作内容 image.png


nginx安装、常用命令和配置文件

在Linux中安装

安装依赖

  • yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

使用文件形式安装nginx

  • 把安装压缩文件放到Linux系统中(指定目录)
  • 解压压缩文件(tar -zxvf nginx-1.20.2.tar.gz)
  • 进入解压目录之后,执行./configure
  • 使用make&&make install
  • 查看版本号 nginx-config --version 安装成功后,在usr多出来文件夹local/nginx,sbin启动脚本

使用yum直接安装

  • 安装依赖

      yum install epel-release
    
  • 安装nginx

      yum install nginx
      // start
      systemctl start nginx
      //yum安装的nginx配置文件默认在:/etc/nginx/conf.d/default.conf
      //静态文件html目录在:/usr/share/nginx/html
    

静态文件html目录在:/usr/share/nginx/html/

nginx常用命令

使用nginx命令时,必须要进入nginx目录 /usr/local/nginx/sbin

  • 启动 sbin/./nginx
  • 关闭 sbin/./nginx -s stop
  • 重新加载 sbin/ ./nginx/ -s reload

防火墙相关

  • 关闭防火墙 systemctl stop firewalld
  • 停止且禁用 systemctl disable firewalld
  • 启动 systemctl start firewalld
  • 开机启动 systemctl enable firewalld
  • 重启 firewall-cmd --reload
  • 查看 firewall-cmd --state
  • 开放端口 firewall-cmd --add-port=80/tcp
  • 查看端口号 firewall-cmd --query-port=80/tcp
  • 删除端口 firewall-cmd --remove-port=80/tcp --permanent

异常处理

  • 端口占用 fuser-k 80/tcp
  • 查看端口监听 netstat -nltp
  • 查看防火墙开放所有端口 firewall-cmd --list-all

nginx配置文件

/usr/local/nginx/conf/nginx.conf

配置文件的组成部分:

  • 全局块

    设置一些影响nginx服务器整体运行的配置指令,包括设置运行nginx服务器的用户组,允许生成的
    worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。
    
  • events块

    主要影响nginx服务器与用户的网络连接,比如work_connections:1024;支持最大连接数
    
  • http块

    nginx配置最频繁的部分,代理,缓存和日志定义等绝大数功能和第三方模块的配置。
    http块包含http全局块、server块。
    
    http全局快配置的指令包括文件引入、MIME-TYPE定义、日志定义、连接超时时间、单链接请求数上限等。
    server块 和虚拟主机有密切联系,用户角度的虚拟主机和独立硬件主机是完全一样,为了节约互联网服务器硬件成本。
    每个http块可以包含多个server块,一个server块相当于一个虚拟主机。
    server块分为全局server块,location块
    1.全局server2.location块
    

nginx 反向代理

第一个案例

  • 在浏览器地址栏中输入 www.123.com 跳转到Linux系统主页面中。

  • 准备工作

      在Linux中安装tomcat,使用默认端口8080
      1.tomcat安装文件放到Linux系统中,解压
      2.进入tomcat的bin目录中,./startup.sh启动tomcat服务器
    
      对外开放访问的端口
      firewall-cmd--add-port=8080/tcp--permanent
      firewall-cmd-reload
      查看已经开放的端口
      firewall-cmd--list-all
      在Windows系统中通过浏览器访问tomcat服务器
      
    

image.png

1.在Windows系统的host文件进行域名和ip对应关系的配置 配置host
192.168.32.21  www.123.com
2.在nginx中做反向代理
   

第二个案例

  • 使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001.

  • 准备工作

    准备两个不同端口的服务器,8080和8081
    创建文件夹和页面
    具体配置
        1.在nginx具体配置中添加
        2.开放所需的端口
        
    

nginx 负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器。

实例

  • 实现效果

      浏览器地址输入地址www.123.com ,负载均衡效果,平均8080和8081端口中。
    
  • 准备工作

      准备两台tomcat服务器
      在tomcat里webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html
    

nginx 动静分离

动态请求和静态请求分开。1.把静态文件独立成单独的域名,放在独立的服务器上(目前常用)。2.动态和静态文件混合在一起,通过nginx区分。

实现

  • 通过location指定不同的后缀名实现不同的请求转发。
  • 通过expires参数设置,访问浏览器缓存过期时间,减少与服务器之前的请求和流量。
  • autoindex on(列出当前文件夹的内容)

nginx 配置高可用集群

主服务器挂掉后备份服务器顶替

实现

  • 在两台服务器上安装keepalived yum install keepalived -y
  • 配置keepalived.conf(主从配置)

linux一些操作

  • 管理员登陆

      su
      password
    
  • 查看安装

      rpm -q -a package                      
    

nginx配置环境变量

输入 nginx -v

image.png

出现此问题的原因是因为没有配置环境变量

解决

//进入此文件
vim /etc/profile
//追加
PATH=$PATH:/usr/local/nginx/sbin
export PATH
// 保存
source /etc/profile

再次输入 nginx -v

image.png

Linux配置多个环境变量

//方式一
PATH=$PATH:/usr/local...:/usr/local/...
export PATH
//方式二
NGINX_HOME=/usr/local/
PATH=$NGINX_HOME:$PATH
export PATH

nginx 关于防火墙的配置

  • systemctl status firewalld 查看状态
  • systemctl stop firewalld 暂停防火墙
  • systemctl disable firewalld 禁用防火墙
  • systemctl enable firewalld 开启防火墙
  • systemctl-cmd --add-port=8080/tcp --permanent 永久性添加端口

小结

nginx的性能是比较突出的,主要在于写配置以及Linux中的一些操作,孰能生巧。