【狂神说java】Nginx快速入门--学习笔记

Nginx快速入门

一、前言

Nginx快速入门:https://www.kuangstudy.com/bbs/1353634800149213186

视频课是狂神说java的Nginx入门课程,课程很短,大概四十多分钟,但是跟着操作可能会慢些,课程是比较通俗易懂的

二、使用场景

  • 当项目用户数少,并发量小时,jar包启动,一台服务器tomcat处理用户请求并返回就行了
    一台tomcat服务器处理请求
  • 并发量大,一台服务器满足不了需求的时候,可能会进行横向扩展,多台服务器进行部署同一个项目
  • 当项目部署在多台服务器时,请求地址或端口会不一样,而客户端请求的时候,最好的方式是,使用一个代理服务器
  • 客户端请求代理服务器,代理服务器按照规则进行转发和处理请求(帮我们转发到不同的服务器节点之上)
  • 这个过程用户是无感知的,还可以按照服务器的性能设置不同的权重选择,保证最佳体验
    代理服务器处理请求

三、Nginx简介

engine /ˈendʒɪn/ n.发动机,引擎

  • Nginx(engine x)是一个高性能的HTTP和反向代理web服务器, 也提供IMAP、POP3、SMTP服务
  • 第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。用C语言写成
  • 特点:占有内存小、并发能力强(官方测试支持高达50000个并发连接数的响应(5万)),事实上nginx的并发能力在同类型的网页服务器中表现较好
  • 使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
  • Nginx是一个安装简单、配置文件简洁、bug非常少的服务器,启动容易,几乎可以7*24不间断运行,可以不间断服务的情况下进行软件版本升级

四、Nginx作用

负载均衡、http代理、反向代理:作为web服务器最常用的功能之一,尤其是反向代理

架构:一层解决不了就再加一层

  • 正向代理:代理客户端,多个客户端使用同一个代理,代理作为客户端请求服务器(如服务器设置白名单的时候)
  • 反向代理:代理服务器,客户端请求代理服务器,然后代理服务器再分发到各个项目服务器处理请求(并发量大的时候)
  • 负载均衡:Nginx提供的负载均衡有两种策略:内置策略和扩展策略
    • 内置策略:轮询、加权轮询、Ip hash
      • 轮询:各个服务器交替
      • 加权轮询(weight):设置权重,权重高的处理请求的比例高(如:服务器a权重为2,服务器b的权重为1,那么有3个请求,a会处理2/3,b会处理1/3)
      • ip hash:根据客户端请求的ip进行hash操作,根据hash结果将同一个客户端ip请求分发给同一台服务器处理,可以解决session不共享的问题
        • 就是同一个ip只访问同一个服务器,可以解决session不共享的问题
        • 但是如果这个服务器挂了,那么就会影响客户端
        • session共享问题建议用redis解决
    • 扩展策略:比较宽泛,各种策略…
      • 动静分离
        • 在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件)这些不需要经过后台处理的文件称为静态文件。
        • 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
    • 通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验

五、Nginx的安装

官网下载地址: https://nginx.org/en/download.html

下载稳定的版本 Stable version

1.Windows下载安装
  • 官网下载稳定版本的Windows版本的Nginx

    • MainLine version: 主线版本
    • Stable version: 稳定版本
    • Legacy version: 历史版本
  • 下载后是一个zip压缩包,然后进行解压

  • 解压后
    nginx解压后文件目录

    • conf:配置文件夹,存放配置文件
    • contrib:存放一些实用工具
    • docs:文档文件夹,存放相关文档
    • html:页面文件夹,存放一些默认页面,如index, 404, 500等
    • logs:日志文件夹,存放一些错误日志或运行日志等其他
    • temp:临时文件夹,存放临时文件
  • 启动

    • 解压后直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
    • 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可
      nginx目录输入cmd
      输入命令 nginx.exe 启动
  • 检查nginx是否启动成功

    • 直接在浏览器地址栏输入网址 http://localhost:80 回车,出现Welcome to nginx页面说明启动成功!
      测试nginx启动成功
    • 注意:80是Nginx配置文件中配置的监听端口
      • http 默认端口是80
      • https 默认端口是443
      • 这里配置的localhost,访问可以使用本地IP、localhost、127.0.0.1进行测试
        nginx配置监听端口
2.linux下安装

参考博客:https://blog.csdn.net/weixin_50003028/article/details/132567183

  • 下载上传安装包

    • 下载安装包
      nginx官网下载nginx安装包
    • 上传到linux服务器特定目录
      上传到linux服务器特定目录
    • 安装编译工具及库文件
    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel pcre-devel
    
      - gcc、gcc-c++ :  主要用来进行编译相关使用
      - openssl、openssl-devel :  一般当配置https服务的时候就需要这个了
      - zlib、zlib-devel : 主要用于文件的解压缩
      - pcre、pcre-devel : Nginx的rewrite模块和HTTP核心模块会用到**PCRE正则表达式**语法
      - make # 遍历
      - install # 安装 
    
    • 解压nginx安装包
      • tar -zxvf nginx-1.24.0.tar.gz
      • 进入安装包目录,编译安装nginx,默认安装到 /usr/local/nginx中
          //编译
          ./configure --prefix=/usr/local/nginx
           //安装
          make && make install
      
      • 找一下nginx安装到什么位置上了: whereis nginx
      • 测试配置
      • 启动
         # 进入nginx安装目录
         cd /usr/local/nginx/sbin
          
         # 启动
         /nginx
        

    启动nginx

    • 测试nginx是否启动
      • 访问服务器nginx监听端口(默认配置文件监听80端口): ip:端口
      • 注意:如果正常启动了访问不到,查看防火墙端口是否开启
      • 注意:除了linux服务器防火墙,阿里云需要配置安全组开启端口
      • 进入页面:Welcome to nginx! 表示nginx启动成功
        访问nginx监听端口测试启动成功
3.配置监听
  • nginx的配置文件是conf目录下的nginx.conf
  • 默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。
  • 修改后,可以不关闭Nginx,直接执行 nginx -s reload,重新加载配置,即可让改动生效配置监听
4.启动nginx
  • Windows:打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可
  • linux:进入nginx安装目录,./nginx 回车启动
5.关闭nginx
  • 如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx
  • 输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
  • 使用taskkill: taskkill /f /t /im nginx.exe
  • taskkill是用来终止进程的
    • /f 是强制终止
    • /t 终止指定的进程和任何由此启动的子进程。
    • /im 示指定的进程名称
6.Nginx常用命令
```
    cd /usr/local/nginx/sbin/
    ./nginx  启动
    ./nginx -s stop  停止
    ./nginx -s quit  安全退出
    ./nginx -s reload  重新加载配置文件
    ps aux|grep nginx  查看nginx进程
```

六、nginx相关配置

参考博客: https://blog.csdn.net/zdm513/article/details/129301710

1.基本结构
# 一、全局配置
...
 
# 二、交互网络连接优化配置
events {
    ...
}
 
# 三、http服务器
http {
    #http基础配置
    ...
 
    # 四、负载均衡配置
    upstream www.xxx.com{
        ...(与server 个数 对应)
    }
    # 五、虚拟主机的配置(可配置多个,与upstream对应)
    server {
        #server基础配置
        ...
 
        # 反向代理配置(可配置多个) 
        location {
            # 基础配置
        }
    }
}
2.全局配置
  • user:主模块命令, 指定 Nginx 的 worker 进程运行用户以及用户组,默认 nobody 账号
	#user  nobody;
  • worker_processes:指定 Nginx 要开启的进程数,单个节点的 nginx 启动有 1 个 master 进程和 n 个 worker 进程,建议设置为等于CPU总核心数
	worker_processes  1;
  • error_log:全局错误日志定义类型
	#error_log  logs/error.log;
	#error_log  logs/error.log  notice;
	#error_log  logs/error.log  info;
  • pid:用来指定进程id的存储文件位置
	#pid      logs/nginx.pid;
3.event 配置
  • 主要是nginx 和用户交互网络连接优化的配置内容
  • worker_connections:连接数
    • 单个进程(work)最大连接数(max_client),默认是1024
    • 最大连接数(max_client)= 进程数(worker_processes )* 连接数(worker_connections)
    worker_connections  1024;
  • keepalive_timeout :keepalive超时时间。
  • open_file_cache :将为打开文件指定缓存,默认未启用
  • open_file_cache_valid :是指多长时间检查一次缓存的有效信息,默认60s
4.HTTP
  • 设定http服务器,利用它的反向代理功能提供负载均衡支持
  • include: 文件扩展名与文件类型映射表
	include       mime.types;
  • default_type:默认文件类型
	default_type  application/octet-stream;
5.负载均衡配置
  • 负载均衡配置,nginx的upstream目前支持4种方式的分配
  • nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
  • 在需要使用负载均衡的server中增加 proxy_pass
  • 设定每个后端服务器在负载均衡调度中的状态。常用的状态有:
    • down,表示当前的 server 暂时不参与负载均衡。
    • backup,预留的备份机器。当其他所有的非 backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
    • max_fails,允许请求失败的次数,默认为 1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
    • fail_timeout,在经历了 max_fails 次失败后,暂停服务的时间。max_fails 可以和 fail_timeout一起使用
    • 注:当负载调度算法为 ip_hash 时,后端服务器在负载均衡调度中的状态不能是 weight 和 backup。
  • 轮询(默认)
	upstream bakend {
	    server 192.168.5.106:8888;
	    server 192.168.5.107:8888;
	}
  • 加权轮询(weight):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,权值越高被分配到的几率越大。
	upstream bakend {
	    server 192.168.5.106 weight=10;
	    server 192.168.5.107 weight=5;
	}
  • ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
	upstream bakend {
	    ip_hash;
	    server 192.168.5.106:88;
	    server 192.168.5.107:80;
	}
  • fair: 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
	upstream bakend {
	    server 192.168.5.106:88;
	    server 192.168.5.107:80;
	    fair;
	}
  • url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
	upstream backend {
	    server 192.168.5.106:888;
	    server 192.168.5.107:888;
	    hash $request_uri;
	    hash_method crc32;
	}
6.server虚拟主机的配置(可配置多个,与upstream对应)
  • listen:监听端口
  • server_name:域名可以有多个,用空格隔开
  • charset:编码
  • location: 地址
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值