IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx1.18.0安装 -> 正文阅读

[系统运维]nginx1.18.0安装

Nginx 的应用场景(或功能)

静态处理:不管是httpd还是nginx默认只能处理静态页面

反向代理:不直接处理客户端的请求,而是将请求转交给其它服务器

负载均衡:跟反向代理相结合,负责将客户端的请求转交给其它压力较小的服务器

资源缓存:对客户端经常访问的数据进行缓存,从而加快客户端的访问的速度

安全防护:nginx对自己本身有一定的防护措施

访问限制:类似于apache的order deny,allow

访问认证:对所访问的网站,进行添加用户名和密码

一、 I/O(输入/输出)的简介

每次I/O,都要经由两个阶段:

1、将数据从磁盘文件先加载至内核空间(缓冲区),等待数据准备完成,时间较长

2、将数据从内核缓冲区复制到用户空间的进程的内存中,时间较短

?同步/异步关注是被调用者消息通信机制

同步:调用者等待被调用者返回消息,才能继续执行

例如:老板布置你任务,一直向你询问有没有完成,完成了老板做下一件事,这种通信机制成为同步

异步:被调用者通过状态、通知或者回调机制主动通知被调用者的运行状态

例如:老板分配你任务,任务进度状态你会向老板汇报,老板做自己的事情,不会向你问询结果

同步和异步的区别

同步 被调用者不会返回任务的状态,需要调用者不停的询问

异步 被调用者会向调用者返回任务的状态,不需要调用者不停的询问

阻塞/非阻塞:关注调用者在等待结果返回之前的状态

阻塞(blocking):指I/O操作需要彻底完成后才返回到用户空间,调用结果返回之前,调用者被挂起

例如:手洗衣服,没洗完之前你都是被占用的状态。

非阻塞(nobloking):指I/O操作被调用后立刻返回一个用户状态,无需等IO操作彻底完成,最终的调用结果返回之前,调用者不会被挂起

例如:全自动洗衣机,不需要占用你时间,洗完会通知你,在期间你没有因为洗衣服被占用时间

I/O的模型有:同步阻塞、同步非阻塞、异步阻塞(IO多路复用select)、异步半阻塞(信号驱动型apache)、异步非阻塞(异步IO模型nginx)

二、 nginx的模式

nginx有两个工作模式:master-worker模式和单进程模式

master-worker:在该模式下,nginx启动成功后,会有一个master进程和至少一个的worker进程。master进程负责处理系统信号,加载配置,管理worker进程(启动,杀死,监控,发送消息/信号等)

模式的优点

1、稳定性高,只要还有worker进程存活,就能够提供服务,并且一个worker进程挂掉master ?进程会立即启动一个新的worker进程,保证worker进程数量不变,降低服务中断的概率

2、配合linux的cpu亲和性配置,可以充分利用多核cpu的优势,提升性能

3、处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务

单进程模式:nginx启动后只有一个进程,nginx的所有工作都由这个进程负责。由于只有一个进程,因此可以很方便地利用gdb等工具进行调试。该模式不支持nginx的平滑升级功能,任何的信号处理都可能造成服务中断,并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。所以,该模式一般只在开发阶段和调试时使用,生产环境下不会使用

三、nginx安装

环境

系统类型

IP地址

主机名称

端口

CentOS7.4

192.168.10.206

localhost

6120


上传nginx安装包

[root@localhost ~]# ls

anaconda-ks.cfg ?nginx-1.18.0.tar.gz

[root@localhost ~]# ?yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel ?#yum安装对应软件包

[root@localhost ~]# useradd -M -s /sbin/nologin nginx #创建一个nginx用户

[root@localhost ~]# tar -zxvf nginx-1.18.0.tar.gz -C /usr/src/

[root@localhost ~]# cd /usr/src/nginx-1.18.0/

[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_dav_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module

[root@localhost nginx-1.18.0]# make && make install

[root@localhost nginx-1.18.0]# /usr/local/nginx/sbin/nginx -t???????????#测试安装是否成功

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@localhost nginx-1.18.0]# /usr/local/nginx/sbin/nginx #启动

[root@localhost nginx-1.18.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #软连接

访问

安装完成

四、nginx的配置文件介绍及操作

配置文件介绍

模块功能
main(全局设置)设置的指令将影响其他所有设置
events(nginx工作模式)设置工作模式和连接数
http(http设置)设置超时时间等等等等
sever(主机设置)主要用于指定主机和端口
location(URL匹配)用于匹配网页位置

1.Main位于nginx.conf配置文件的最高层

2.Main层下可以有Event、HTTP层

3.HTTP层下面有允许有多个Server层,用于对不同的网站做不同的配置

4.Server层也允许有多个Location

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #进入配置文件

2 #user ?nobody; ?????????????????????????????????#设置master进程启动后,fork出的worker进程运行在哪个用户和用户组下;默认由nobody账号运行

3 worker_processes ?4(或auto); ??????????????????#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍)

?worker_cpu_affinity 0001 0010 0100 1000 ????????#将Nginx工作进程绑定到指定的CPU核心,默认Nginx是不进行进程绑定的

4 worker_cpu_affinity auto ???????????????????????#自动绑定设置

5 #error_log ?logs/error.log; ????????????????????#指定错误日志存放的路径

6 #error_log ?logs/error.log ?notice; ????????????#错误日志记录级别

8 # ?3 worker_processes ?1;

10 # ???rror_log ?logs/error.log ?info;

12 #pid ???????logs/nginx.pid; ????????????????????#指定进程pid的存储文件位置

14 worker_rlimit_nofile 512000; ???????????????????#工作进程最大打开文件数 ??????????????????????????

15 events { ???????????????????????????????????????#事件模块

16 ????use epoll; ?????????????????????????????????#使用的网络I/O模型,Linux推荐使用epoll模式;默认为epoll模式

17 ????worker_connections ?1024; ??????????????????#用于定义Nginx每个进程的最大连接数,默认是1024

20 http {

21 ????include ??????mime.types; ?????????????????#导入支持的文件类型

22 ????default_type ?application/octet-stream; ???#设置默认的类型,会提示下载不匹配的类型文件

24 ????#log_format ?main ?'$remote_addr - $remote_user [$time_local] "$request" ' ??????????????????# log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用

25 ????# ?????????????????'$status $body_bytes_sent "$http_referer" '

26 ????# ?????????????????'"$http_user_agent" "$http_x_forwarded_for"';

28 ????#access_log ?logs/access.log ?main;

30 ????sendfile ???????on; ??????????????????????????????????????????????????#用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞

31 ????#tcp_nopush ????on; ??????????????????????????????????????????????????#在开启了sendfile的情况下,合并请求后统一发送给客户端

33 ????#keepalive_timeout ?0;

34 ????keepalive_timeout ?65; ???????????????????????????????????????????????#设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接;单位是秒

36 ????#gzip ?on; ???????????????????????????????????????????????????????????#开启文件压缩

38 ????server { ????????????????????????????????????????#定义作为web服务器的相关属性 ?可以有多个

39 ????????listen ??????80; ????????????????????????????#监听的端口

40 ????????server_name ?localhost; ?????????????????????#设置server name,可以以空格隔开写多个,支持正则表达式,如 *.aaa.com,www.aaa.* ~^www\d+\.aaa\.com$ default_server

42 ????????#charset koi8-r; ????????????????????????????#设置编码格式,默认是俄语格式,可以改为utf-8

44 ????????#access_log ?logs/host.access.log ?main; ????#设备访问日志

46 ????????location / { ????????????????????????????????#定义一个虚拟主机的属性,所有的web服务必须定义成一个虚拟主机

47 ????????????root ??html; ????????????????????????????#指定网站目录

48 ????????????index ?index.html index.htm; ????????????#指定默认网页文件,此指令由ngx_http_index_module模块提供

49 ????????}

51 ????????#error_page ?404 ?????????????/404.html;

53 ????????# redirect server error pages to the static page /50x.html

55 ????????error_page ??500 502 503 504 ?/50x.html; ????#当发生错误的时候能够显示一个预定义的uri(相对路径)

56 ????????location = /50x.html {

57 ????????????root ??html;

58 ????????}

ngxinx的相关操作

nginx -h ????????????????# 查看帮助信息



nginx -v ????????????????# 查看nginx版本



nginx start ?????????????# 启动nginx



nginx -s quit ???????????# 关闭nginx,完整有序的停止nginx,保存相关信息



nginx -s stop ???????????# 关闭nginx,快速停止nginx,可能不保存相关信息



nginx -s reload ?????????# 重新载入nginx,当配置信息需要重新加载配置时使用



nginx -t -c filename ????# 测试nginx配置文件是否正确



nginx -s reopen ?????????# 重新打开日志文件

查看nginx所有路径

[root@C7--01 ~]# rpm -ql nginx ??????????????????????????????#查看所有nginx路径

/etc/logrotate.d/nginx

/etc/nginx

/etc/nginx/conf.d

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

/etc/nginx/fastcgi_params

/etc/nginx/mime.types

/etc/nginx/modules

/etc/nginx/nginx.conf

/etc/nginx/scgi_params

/etc/nginx/uwsgi_params

/usr/lib/systemd/system/nginx-debug.service

/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.21.4

/usr/share/doc/nginx-1.21.4/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访问日志

nginx的文件是acces.log、error.log
apache的文件是access_log、error_log

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

?21 ????#log_format ?main ?'$remote_addr - $remote_user [$time_local] "$request" '

?22 ????# ?????????????????'$status $body_bytes_sent "$http_referer" '

?23 ????# ?????????????????'"$http_user_agent" "$http_x_forwarded_for"';

?24

?25 ????#access_log ?logs/access.log ?main;

$remote_addr 远程请求IP地址

远程用户邮箱 默认没有显示 为 -

$remote_user 客户端用户的名称,没有时用-符合代替

$time_local 本地时间戳

$request 请求具体URI文件,例如网页中的JPG图片

$status http请求状态码

$body_bytes_sent 请求文件大小

$http_refer 网页url跳转来源,源地址,可以伪造。例如一个HTML网页然后调用图片URI资源

$http_user_agent 用户终端浏览器UserAgent的相关信息

$http_x_forwarded_for 是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:49:25  更:2022-01-04 13:50:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:45:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码