石一歌的Nginx笔记

Nginx

Http 代理,反向代理:作为 web 服务器最常用的功能之一,尤其是反向代理。

Tengine是淘宝开源的Nginx升级版,兼容Nginx,也可以考虑。

下载地址

作用

  • Http代理

    QQ截图20220108234745

  • 反向代理

    QQ截图20220108234843

  • 负载均衡

    • 轮询

        最基本的配置方法,上面的例子就是轮询的方式,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。

      QQ截图20220108235952

    • weight

        权重方式,在轮询策略的基础上指定轮询的几率。

      QQ截图20220109000039

    • ip_hash

        指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

      QQ截图20220109000118

    • least_conn

        把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

    • fair(第三方)

        按照服务器端的响应时间来分配请求,响应时间短的优先分配。

    • url_hash(第三方)

      ​ 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

安装

Window(看看就好,服务器都是Linux)

  • 下载

    nginx-1.20.2.zip

  • 启动

    • 直接双击 nginx.exe,双击后一个黑色的弹窗一闪而过
    • 打开 cmd 命令窗口,切换到 nginx 解压目录下,输入命令 nginx.exe ,回车
  • 配置监听

    • nginx 的配置文件是 conf 目录下的 nginx.conf,默认配置的 nginx 监听的端口为 80,如果 80 端口被占用可以修改为未被占用的端口
    • nginx -s reload 重启配置生效
  • 关闭

    • 输入 nginx 命令 nginx -s stop(快速停止 nginx) 或 nginx -s quit(完整有序的停止 nginx)

    • 使用 taskkill taskkill /f /t /im nginx.exe

      taskkill是用来终止进程的,
      /f是强制终止 .
      /t终止指定的进程和任何由此启动的子进程。
      /im示指定的进程名称 .

Linux

  • 基础环境

    • gcc 安装

      安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

      yum install gcc-c++
      
    • PCRE pcre-devel 安装

      PCRE(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。命令:

      yum install -y pcre pcre-devel
      
    • zlib 安装

      zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

      yum install -y zlib zlib-devel
      
    • OpenSSL 安装
      OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
      nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 Centos 安装 OpenSSL 库。

      yum install -y openssl openssl-devel
      
    • 一条命令安装环境

      yum -y install gcc-c++ zlib-devel openssl-devel libtool
      
  • 下载nginx安装包并解压

    cd /usr/local
    wget http://nginx.org/download/nginx-1.14.0.tar.gz
    tar -zxvf nginx-1.14.0.tar.gz
    
  • 配置和安装

    cd nginx-1.14.0
    ./configure --prefix=/usr/local/nginx #把所有资源文件放在/usr/local/nginx的路径中。
    make && make install
    
  • 使用

    cd ../nginx/sbin
    ./nginx #启动
    ./nginx -s reload #重启
    ./nginx -s stop #关闭
    ps -aux | grep nginx #查看相关
    
  • 问题

    • 新服务器需要检查相关端口 防火墙和安全组(阿里云控制台),相关命令在Linux笔记中,不再赘述

    • 新手建议直接关闭防火墙

      service firewalld stop
      
  • /conf/nginx.conf

      server {
            listen       80; //服务器映射端口号
            server_name  localhost;
            location / {
                root /usr/local/Deploy/springboot-vue/vue/dist; //前端项目文件夹地址
                index index.html index.htm;
            }
            location /api {
                proxy_pass http://localhost:9090/; //前端项目端口号
            }
         	...
      }
    
posted @ 2022-01-09 00:43  Faetbwac  阅读(59)  评论(2编辑  收藏  举报