当前位置: 首页 > news >正文

Nginx基础入门

一、Nginx的优势

nginx是一个高性能的HTTP和反向代理服务器,也是一个SMTP(邮局)服务器。

Nginx的web优势:IO多路复用,时分多路复用,频分多路复用

                              高并发,IO多路复用,epoll,异步,非阻塞

IO多路复用理论方法

1.第一种方法:最传统的多线程并发模型(没进来一个新的I/O六会分配一个新的进程管理)

2.第二种方法:I/O多路复用(耽搁县城,通过记录跟踪每个I/O六的状态,来同时管理多个I/O流),发明他的原因是尽量多个提高服务器的吞吐能力,在同一个线程里面,通过拨开关的方式,来同时传输多个I/O流

IO多路复用技术类型

select

poll

epoll:特点:异步,非阻塞

二、HTTP协议详解

三、Nginx部署Yum

1.官网链接

http://www.nginx.org

2.nginx版本类型

  • Mainline version:主线版,即开发版
  • Stable version:最新稳定版,生产环境上建议使用的版本
  • Legacy versions:遗留的老版本的稳定版

3.配置yum源

下载压缩包

安装nginx文档

4.安装

环境问题

getenforce

systemctl  status   firewalld

yum  -y  install  nginx

systemctl  start nginx

systemctl  enable  nginx

nginx  -V

四、Nginx配置文件

rpm  -ql  nginx  查看所有文件

/etc/logrotate.d/nginx日志轮转
/etc/nginx
/etc/nginx/conf.d子配置文件
/etc/nginx/conf.d/default.conf默认网站配置文件
/etc/nginx/fastcgi_params动态网站模块文件-python,php所需的相关变量
/etc/nginx/mime.types文件关联程序(网站文件类型和相关处理程序)
/etc/nginx/modules模块文件夹,第三方模块
/etc/nginx/nginx.conf主配置文件
/etc/nginx/scgi_params动态网站模块文件-python,php所需的相关变量
/etc/nginx/uwsgi_params动态网站模块文件-python,php所需的相关变量
/usr/lib/systemd/system/nginx-debug.servicengnix调试程序启动脚本
/usr/lib/systemd/system/nginx.service服务脚本
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx主程序
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.24.0
/usr/share/doc/nginx-1.24.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx  缓存
/var/log/nginx日志文件 

五、Nginx编译参数

ngnix   -V

nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled

configure arguments:配置参数 configure  --help 查询帮助
--prefix=/etc/nginx安装路径
--sbin-path=/usr/sbin/nginx程序文件
--modules-path=/usr/lib64/nginx/modules模块路径
--conf-path=/etc/nginx/nginx.conf主配置文件
--error-log-path=/var/log/nginx/error.log错误日志
 --http-log-path=/var/log/nginx/access.log访问日志
--pid-path=/var/run/nginx.pid程序id
--lock-path=/var/run/nginx.lock所路径,防止重复启动nginx
--http-client-body-temp-path=/var/cache/nginx/client_temp 缓存
--http-proxy-temp-path=/var/cache/nginx/proxy_temp代理缓存
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_tempphp缓存
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temppython缓存
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
--with-compat启动动态模块兼容
--user=nginx用户
--group=nginx
--with-file-aio使用nginx的aio特性会大大提高性能
--with-threads多线程模块
--with-http_addition_module响应之前或者之后追加文本内容,比如像在站点底部追加一个js广告或者新的css样式
--with-http_auth_request_module认证模块
--with-http_dav_module增加上传PUT,DELETE,MKCOL;创建集合,COPY,MOVE方法默认情况下为关闭
--with-http_flv_modulenginx添加mp4,flv视频支持模块
--with-http_gunzip_module压缩模块
--with-http_gzip_static_module
--with-http_mp4_module多媒体模块
--with-http_random_index_module
--with-http_realip_modulenginx获取真实ip模块
--with-http_secure_link_modulenginx安全下载模块
--with-http_slice_modulenginx中文文档

--with-http_ssl_module安全模块
--with-http_stub_status_module访问状态
--with-http_sub_modulenginx替换网站响应内容
--with-http_v2_module
--with-mail邮件哭护短
--with-mail_ssl_module
--with-stream负载均衡
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-cc-optcpu优化参数
--param
--with-ld-opt

六、Nginx基本配置

1.观察主配置文件

1.1分类

1.CoreModule模块(进程数等)

全局/核心模块:配置影响nginx全局的指令,一般有运行nginx服务器的用户组,nginx进程pid存放位置,日志存放路径,配置文件引入,允许生成worker  process数等

2.EventsModule 事件驱动模块(工作模式)

events块:配置影响nginx服务期货与用户的网络连接,有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否需同时接受多个网络连接,开启多个网络连接序列化等

nginx优化可以改变worker_process为cpu数量,和worker_connections最大连接数

3.HttpCoreModule   http内核模块(文档程序类型,配置文件)

default_type  application/octet-stream;         字节流处理方式

http模块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置,如文件引入,mime-type定义,日子自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等

4.server块:配置虚拟主机的相关参数,一个http中可以有多个server

5.location:配置请求的路由,以及各种页面的处理情况

1.2vim  /etc/nginx/nginx.conf

2.观察默认虚拟主机配置文件

vim  /etc/nginx/conf.d/default.conf

server {             虚拟主机
    listen       80;                监听端口
    server_name  localhost;                购买的域名(服务器的名字)

    #access_log  /var/log/nginx/host.access.log  main;        日志

    location / {                位置
        root   /usr/share/nginx/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   /usr/share/nginx/html;                错误页面主页
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
   #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
 

3.启动一个新的虚拟主机

3.1vim  /etc/nginx/conf.d/xuleilinux.conf   在nginx上启动一个独立的网站

server {             
    listen       80;                
    server_name  xuleilinux.com;                

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

}

mkdir  /xuleiLinux

echo  meinanzi > /xuleilinux/index.html

3.2.重启服务

systemctl   restart   nginx

3.3.域名解析和访问

vim  /etc/hosts

192.168.64.139  xuleilinux.com

elink xuleilinux.com    出现meinanzi成功  按q退出

七、Nginx日志Log

1.日志配置

1.1日志模块

官方文档

http://nginx.org/en

日志模块的名称:ngx_http_log_module

1.2相关指令

log_format日志格式
access_log
error_log
open_log_file_cache

1.3日志的格式和命令----log_format

1.3.1简介

Nginx又非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志,日志格式通过log_format命令定义

1.3.2语法

1.3.3默认值

1.3.4环境

Context:http context

1.3.5定义设置位置

vim  /etc/nginx/nginx.conf

日志部分配置

日志格式允许包含的变量

$remote_addr远程地址,记录客户端ip地址
$remote_user远程用户,记录客户端用户名称
[$time_local]本地时间,服务器自身时间
$request请求,记录请求的url和http协议
$status状态,请求状态
$body_bytes_sent发送给客户端的字节数,不包括响应头的大小
$http_referer记录那个页面链接访问过来的(超链接)
$http_user_agent记录客户端浏览器相关信息
$http_x_forwarded_for代理ip
old

1.4访问日志和错误日志

access_log

error_log

个性化404

1.修改主配置文件

server {
        listen 80;
        server_name xuleilinux.com;
location / {
        root /xuleilinux;
        index index.html;
}

        error_page 404 /404.html;

        location  = /404.html {
        root /xuleilinux;
}
}

重启nginx   systemctl  restart nginx

2.创建错误反馈页面

vim  /xuleilinux/404.html

3.访问

访问不存在的页面

4.查看404日志

1.5日志缓存

大量访问到来时,对于每一条日志记录,都将是先打开文件,在写入日志,然后关闭占用系统的io与业务无关,可以使用open_log_file_cache来设

2.日志轮转/切割

前言

Nginx安装,回默认启动日志轮转

rpm  -ql  nginx  | grep  log

/etc/logrotate.d/nginx

/var/log/nginx

3.日志分析

八、Nginx WEB模块

九、Nginx访问限制

十、访问控制

相关文章:

  • 10、内网安全-横向移动域控提权NetLogonADCSPACKDC永恒之蓝
  • GPT-SoVITS-WebUI 克隆声音 macos搭建
  • 计算机组成原理(4)-----Cache的原理及相关知识点
  • 解决vscode每次git pull/push都需要输入账号密码
  • 软件测试面试常见问题【含答案】
  • java异常处理设计
  • Docker之MySQL8安装、容器数卷挂载、数据库导入导出操作
  • Resolving Low-Level Graphics Issues
  • 我为什么不喜欢关电脑?
  • 【深度学习每日小知识】交并集 (IoU)
  • Python+ddt+Excel实现接口自动化测试生成完美测试报告
  • SpringBoot+WebSocket实现即时通讯(一)
  • 移除数组中的元素
  • 小程序缓存封装 storage
  • PageOffice服务器端组件低于5.4,请联系管理员升级PageOffice服务器端组件版本
  • CAP 一致性协议及应用解析
  • Date型的使用
  • ES6简单总结(搭配简单的讲解和小案例)
  • Flannel解读
  • Flex布局到底解决了什么问题
  • Hexo+码云+git快速搭建免费的静态Blog
  • Javascripit类型转换比较那点事儿,双等号(==)
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • React 快速上手 - 07 前端路由 react-router
  • Wamp集成环境 添加PHP的新版本
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 构建工具 - 收藏集 - 掘金
  • 看域名解析域名安全对SEO的影响
  • 力扣(LeetCode)56
  • 责任链模式的两种实现
  • puppet连载22:define用法
  • 进程与线程(三)——进程/线程间通信
  • $(selector).each()和$.each()的区别
  • (09)Hive——CTE 公共表达式
  • (11)MATLAB PCA+SVM 人脸识别
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (实战篇)如何缓存数据
  • (四)模仿学习-完成后台管理页面查询
  • (算法设计与分析)第一章算法概述-习题
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 服务 ServiceController
  • @Bean有哪些属性
  • @GetMapping和@RequestMapping的区别
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • []我的函数库
  • [22]. 括号生成
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [Android]如何调试Native memory crash issue
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [BZOJ3223]文艺平衡树