Nginx概述

  • 俄罗斯人开发的 engine x
  • 开源 可直接获取源代码
  • 高性能:支持高并发:能支持几万并发连接
  • 资源消耗少:3万并发,开启10个Nginx线程消耗不到200M内存
  • 可靠,服务稳定
  • 大有赶超老大哥Apache的趋势 2019 42%

why Nginx

  • Nginx非常轻量 功能模块少 (源代码仅保留http与核心模块代码,其余不够核心代码会作为插件来安装) 代码模块化 (易读,便于二次开发,对于开发人员非常友好)
  • 互联网公司都选择Nginx
  • 1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的
  • 2.适合当前主流架构趋势,微服务、云架构、中间层
  • 3.统一技术栈,降低维护成本,降低技术更新成本。
  • Nginx采用Epool网络模型,Apache采用Select模型
  • Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。
  • Epool: 当用户发起请求,epool模型会直接进行处理,效率高效,并无连接限制。

应用场景

Nginx安装

安装方式:

1.源码编译=>Nginx (1.版本随意 2.安装复杂 3.升级繁琐 4.规范 5.便于管理)

2.epel仓库=>Nginx (1.版本较低 2.安装简单 3.配置不易读)

3.官方仓库=>Nginx (1.版本较新 2.安装简单 3.配置易读)

2与3安装对比:

# web01 官方仓库安装https://nginx.org/en/download.html 拉到最底下https://nginx.org/en/linux_packages.htmlhttps://nginx.org/en/linux_packages.html#RHEL-CentOS# 先vim /etc/yum.repos.d/nginx.repo再安装把上面的官方仓库考进来[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true 0 ✓ 11:17:56 root@web01,172.16.1.7:~ # nginx -vnginx version: nginx/1.22.0# web02 epel仓库安装直接yum install -y nginx 是走eple仓库root@web02,172.16.1.8:~ # nginx -vnginx version: nginx/1.20.1                 (版本较低)公司没规定就直接安,因为快

Nginx启停

# 启动systemctl start nginxnginx/usr/sbin/nginx# nginx加入开机自启systemctl enable nginx# 停止systemctl stop nginxnginx -s stop/usr/sbin/nginx -s stop# 重启systemctl restart nginx# 重新加载systemctl reload nginx# 选项-c 指定配置文件的路径-t 检测配置文件语法问题(不检测单词拼写)-s 启停重载 属于服务操作-v 查看版本号-V 检查nginx的编译参数

验证是否安装成功:浏览器访问相应服务器

注意防火墙和SElinux是否关闭。

Nginx配置文件介绍

 0 ✓ 15:44:00 root@web01,172.16.1.7:/ # tree /etc/nginx/etc/nginx├── conf.d│   └── default.conf├── fastcgi_params├── mime.types├── modules -> ../../usr/lib64/nginx/modules├── nginx.conf├── scgi_params└── uwsgi_params 0 ✓ 11:45:13 root@web01,172.16.1.7:/etc/nginx # lltotal 24drwxr-xr-x 2 root root   26 Sep 28 11:17 conf.d    # <<-----那个默认页面的配置文件default.conf就在这里面-rw-r--r-- 1 root root 1007 May 24 23:35 fastcgi_params-rw-r--r-- 1 root root 5349 May 24 23:35 mime.typeswxrwxrwx 1 root root   29 Sep 28 11:17 modules -> ../../usr/lib64/nginx/modules-rw-r--r-- 1 root root  648 May 24 23:33 nginx.conf-rw-r--r-- 1 root root  636 May 24 23:35 scgi_params-rw-r--r-- 1 root root  664 May 24 23:35 uwsgi_params

1、Nginx主配置文件

2、Nginx代理相关参数文件

3、Nginx编码相关配置文件

4、Nginx管理相关命令

5、Nginx日志相关目录及文件

Nginx主配置文件介绍

Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。Nginx主配置文件整体分为三块:分别是CoreModule(核心模块),EventModule(事件驱动模块),HttpCoreModule(http内核模块)nginx配置文件,每一行都以';'结尾
0 ✓ 11:45:14 root@web01,172.16.1.7:/etc/nginx # grep -Ev '^$|#' /etc/nginx/nginx.conf## 核心层(核心模块)user nginx;                    # nginx的启动用户        worker_processes auto;         # nginx运行的work进程数量(建议与CPU数量一致或auto)                                  auto:自动根据cpu的核心数来启动对应的工作进程数error_log /var/log/nginx/error.log notice;  # nginx错误日志存放路径pid       /var/run/nginx.pid;   # 启动后进程号存放路径## 事件层(事件驱动模块)events {  worker_connections  1024;   # 每个worker进程支持的最大连接数}## http层 (http模块 网站配置)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;                           // 高效文件传输  keepalive_timeout  65;                         // 长连接超时时间  include /etc/nginx/conf.d/*.conf;             //包含nginx其他子配置文件(网站虚拟机配置文件)}##(web02的nginx版本便有)#使用Server配置网站, 每个Server{}标签对应一个独立的网站站点(所谓虚拟主机)server {      listen       80;                # 监听端口, 默认80      server_name driverzeng.com;    # 提供的域名      access_log access.log;         # 该网站的访问日志       'location' / {                      # 控制网站访问路径          root   /usr/share/nginx/html;   # 存放网站源代码的位置          index index.html index.htm;    # 默认返回网站的文件      }  }  ...   # 第二个虚拟主机配置server {  ...  }
# 日志格式中的参数'$remote_addr - $remote_user [$time_local] "$request" '  $remote_addr 远端的IP(上一访问你的IP)$remote_user 登录的用户(网页没有登录用户则为空)[$time_local] 时间"$request"   请求方式 请求URL HTTP协议版本号                    '$status $body_bytes_sent "$http_referer" '$status 状态码$body_bytes_sent 流量"$http_referer" 跳转地址(从哪个网站跳转过来的)'"$http_user_agent" "$http_x_forwarded_for"'"$http_user_agent" 客户端信息"$http_x_forwarded_for"   记录透传ip地址???与代理服务器相关

日志实操

# 查看日志root@web01,172.16.1.7:~ # ll /var/log/nginx/total 68-rw-r----- 1 nginx adm 31262 Sep 28 11:39 access.log-rw-r----- 1 nginx adm 33759 Sep 28 11:39 error.log# 启动服务后,浏览器打开10.0.0.7显示nginx默认页面,刷新一下,日志便出来一条root@web01,172.16.1.7:~ # tail -f /var/log/nginx/access.log10.0.0.1 - - [29/Sep/2022:09:37:48 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"10.0.0.1 - - [29/Sep/2022:09:39:58 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "-"10.0.0.1                       远端IP,网卡- -                           该网站不需要登录[29/Sep/2022:09:37:48 +0800]   时间"GET / HTTP/1.1"               请求方式 请求URI HTTP协议版本号304 0 "-" 状态码(缓存) 流量 无跳转"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" 客户端信息
举报/反馈

阳光微尘live

175获赞 46粉丝
大千世界 纷纷扰扰 幽静乡野 返璞归真
关注
0
0
收藏
分享