Linux系统---nginx(1)

news2024/9/20 5:13:13

目录

一.Nginx概述

1.定义

2.Nginx模块作用

(1)main模块

(2)stream服务模块

(3)邮件服务模块

(4)第三方模块

(5)events模块

(6)http模块

(7)location模块

(8)server模块

(9)auth_basic模块

(10)gzip模块

(11)proxy模块

(12)ssl模块

3.Nginx三大作用

(1)反向代理

(2)正向代理

(3)负载均衡

① 轮询(默认调度算法)

② 加权轮询

③ ip_hash(IP哈希)

④ 最少连接数 least_conn

⑤ 响应时间 fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

⑥ url_hash(URL分配 )(需编译安装第三方模块 ngx_http_upstream_hash_module)

二.Nginx与Apache的区别

三.Nginx信号

四.Nginx核心配置指令

1.访问状态统计配置

(1)查看已安装的Nginx是否包含http_stub_status模块

(2)修改nginx.conf配置文件,指定访问位置并添加stub_status配置(修改之前进行备份) 

(3)重启服务后进行访问测试 

2.基于授权的访问控制

(1)生成用户密码认证文件

​编辑​编辑​编辑(2)修改主配置文件相应的目录,添加认证配置

(3)检查错误,重启服务进行访问测试

​编辑 ​编辑

3.基于客户端访问控制

(1)在主配置文件中添加控制规则

 ​编辑(2)重启服务

(3)被拒绝客户机访问

4.基于域名的nginx虚拟主机

(1)为虚拟主机提供域名和IP映射

 (2)为虚拟主机准备网页文档

​编辑(3)还原nginx主配置文件

​编辑(4)修改主配置文件

(5)重启nginx后进行访问测试


一.Nginx概述

1.定义
  • 一款高新能、轻量级Web服务软件
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
  • 单台物理服务器可支持30 000~50 000个并发请求。
2.Nginx模块作用
(1)main模块

全局配置模块,所有模块都要执行遵守(配置运行nginx服务器的用户(组)、worker_process数(进程)、nginx进程PID存放路径、错误日志存放路径、配置文件的引入等)

(2)stream服务模块

实现反向代理功能,包括TCP协议代理

(3)邮件服务模块

主要用于支持Nginx的邮件服务(对 POP3 协议、 IMAP 协议和 SMTP协议的支持)

(4)第三方模块

二次开发,为了扩展Nginx服务器应用,完成开发者自定义功能(对 POP3 协议、 IMAP 协议和 SMTP协议的支持)

(5)events模块

影响nginx服务器与用户的网络连接

events {                                #events模块设置
 
woker_connections 65536;                #设置单个工作进程最大并发连接数
 
use epoll;                              #事件驱动类型选择为epoll
 
accept_mutex on;                        #同一时刻一个请求轮流由work进程除了,即轮询
 
multi_accept on;                        #每个工作进程同时接受多个网络连接
 
}
(6)http模块

跟web服务相关,主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,包含几个子模块(自定义服务日志、允许sendfile方式传输文件、连接超时时间、单连接请求数上限、Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等)

(7)location模块

 uri网址定位

(8)server模块

服务模块(配置80端口监听、虚拟主机、DNS域名解析等)

(9)auth_basic模块

对网页设置用户名密码

(10)gzip模块

压缩

(11)proxy模块

设置后端IP地址、端口号及http和加密的https

(12)ssl模块

https加密

3.Nginx三大作用
(1)反向代理

在服务端 配置,客户端 访问服务器A ,服务器A 为代理服务器 ,将客户服务再转发到服务器B 

作用:缓存,将服务器的响应缓存在自己的内存中,减少服务器压力;负载均衡,将用户请求分配给多个服务器;访问控制

(2)正向代理

在客户端 配置,配置完了再去访问具体服务,即代理服务器 代理了客户端 ,再去和目标服务器 进行交互

作用:提高访问速度;隐藏客户端真实IP地址

(3)负载均衡

分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

nginx七层负载均衡调度算法(六种)

① 轮询(默认调度算法)

特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。
适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}
② 加权轮询

特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。
适用业务场景:用于后端服务器硬件性处理能力不平均的情形。

upstream backendserver {
server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;
}
③ ip_hash(IP哈希)

特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题。
适用业务场景:适用于需要账号登录的系统,会话连接保持的业务。

upstream backendserver {
ip_hash;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}
④ 最少连接数 least_conn

特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。

适用业务场景:适用于客户端与后端服务器需要保持长连接的业务。

upstream backendserver {
least_conn; server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}
⑤ 响应时间 fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
适用业务场景:对访问响应速度有一定要求的业务。

upstream backendserver {
fair;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}
⑥ url_hash(URL分配 )(需编译安装第三方模块 ngx_http_upstream_hash_module)

特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。

适用业务场景:适用于后端服务器为缓存服务器时比较有效。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
hash $request_uri;
}

二.Nginx与Apache的区别

Apache:同步多进程模型:一个连接对应一个进程(高稳定)

                1.rewrite更强大(rewrite主要功能是实现统一资源定位符URL的跳转)

                2.模块多,基本想到的都可以找到

                3.少bug,更加稳定(nginx相对较多)

                4.PHP支持比较简单(nginx需要配合其他后端用)

                5.处理动态请求更有优势(nginx更适合静态与反向)

Nginx:异步非阻塞模型:多个连接(万级别)对应一个进程(高性能)

                1.轻量级,采用C编写,占用更少的内存与资源

                2.抗并发/高并发,以epoll and kqueue 作为开发模型,负载能力高,高并发下能够保持                     低资源低消耗高性能(apache在PHP处理慢或前端压力很大时,容易出现进程数飙升                     从而拒绝服务)

                3.处理静态文件好,静态处理性能比apache高三倍以上

                4.设计高度模块化,编写模块相对简单

                5.配置简洁,正则配置更简单,且更改完可以使用 -t 测试(apache配置复杂,重启时发                     现出错,会很崩溃)

                6.作为负载均衡服务器,支持七层负载均衡,可以有效防止ddos攻击

                7.本身是一个反向代理服务器,也可以作为邮件代理服务器使用

                8.支持热部署,支持在线升级

三.Nginx信号

nginx -h      
#查询nginx信号使用规则

常用信号: 

信号解释
nginx -v显示版本
nginx -V

显示编译详细情况、模块等信息

nginx -t

检查语法格式

nginx -T打印当前配置
nginx -s发送信号
nginx -s stop立即关闭
nginx -s quit优雅退出,不影响业务的状态下退出
nginx -s reload重新加载配置文件
nginx -s  USR1分割日志
nginx -s  USR2优雅升级
nginx -g 'user zhangsan;' 以张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'前台运行命令

四.Nginx核心配置指令

1.访问状态统计配置
(1)查看已安装的Nginx是否包含http_stub_status模块
cd /usr/local/nginx/sbin
#根据安装路径自由修改/apps/nginx/sbin也可
nginx -V

(2)修改nginx.conf配置文件,指定访问位置并添加stub_status配置(修改之前进行备份) 
cd /usr/local/nginx/conf/              #/apps/nginx/conf同理
cp nginx.conf nginx.conf.bak           #备份
vim nginx.conf
 
    server {
        listen       80;
        server_name  www.clj.com;
 
        charset utf-8;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
        ##添加 stub_status 配置
        location /status {				##访问位置为/status
            stub_status on;				##打开状态统计功能
            access_log off;				##关闭此位置的日志记录
        }

(3)重启服务后进行访问测试 
systemctl restart nginx.service

浏览器访问 http;//192.168.227.100/status

Active connections ∶ 表示当前的活动连接数;
server accepts handled requests∶表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数已处理的请求数。
可curl http∶//192.168.79.210/status 结合 awk与if 语句进行性能监控。

2.基于授权的访问控制
(1)生成用户密码认证文件
yum install -y httpd-tools
#安装工具
 
htpasswd -c /usr/local/nginx/passwd.db zhangsan
#生成用户密码认证文件(注意路径
 
chown nginx /usr/local/nginx/passwd.db 
chmod 400 /usr/local/nginx/passwd.db
#修改属性和赋予执行权限
(2)修改主配置文件相应的目录,添加认证配置
vim /usr/local/nginx/conf/nginx.conf
#路径/apps/nginx/conf/nginx.conf
 
 location / {
            root   html;
            index  index.html index.htm;
            #添加认证配置
            auth_basic "secret";					#设置密码提示框文字信息
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

(3)检查错误,重启服务进行访问测试
 
3.基于客户端访问控制

访问控制规则如下:
deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如果匹配到则停止,不会再往下继续匹配。

(1)在主配置文件中添加控制规则
vim /usr/local/nginx/conf/nginx.conf
#注意路径/apps/nginx/conf/nginx.conf
 
        location / {
            root   html;
            index  index.html index.htm;
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
            
            # 添加控制规则
            deny 192.168.80.77;					#拒绝访问的客户端IP
            allow all;							#允许其他所有客户端访问
        }
 (2)重启服务

(3)被拒绝客户机访问

4.基于域名的nginx虚拟主机
(1)为虚拟主机提供域名和IP映射
echo "192.168.79.100 www.666.com www.6668.com" >> /etc/hosts

 (2)为虚拟主机准备网页文档
mkdir -p /var/www/html/666/
mkdir -p /var/www/html/6668/
echo "<h1>www.666.com</h1>" > /var/www/html/666/index.html
echo "<h1>www.6668.com</h1>" > /var/www/html/6668/index.html
(3)还原nginx主配置文件
cd /usr/local/nginx/conf           #/apps/nginx/conf路径同理 
cp nginx.conf.bak nginx.conf       #还原主配置文件
(4)修改主配置文件
vim /usr/local/nginx/conf/nginx.conf
#/apps/nginx/conf/nginx.conf同理
 
    server {
        listen       80;
        server_name  www.6668.com;						#设置域名			
        charset utf-8;									#设置网页字符集
        access_log  logs/6668.com.access.log;			#设置日志名
        location / {
            root   /var/www/html/6668;					#设置www.bxb.com的工作目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       80;			
        server_name  www.666.com;						#设置域名
        charset utf-8;									#设置网页字符集
        access_log  logs/666.com.access.log;			#设置日志名
        location / {
            root   /var/www/html/666;					#设置www.bxb.com的工作目录
            index  index.html index.htm;
        }

(5)重启nginx后进行访问测试
systemctl restart nginx.service
curl www.666.com
curl www.6668.com  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1471470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go的CSP并发模型实现M, P, G简介

GMP概念简介 G: goroutine&#xff08;协程&#xff0c;也叫用户态线程&#xff09; M: 工作线程(内核态线程) P: 上下文(也可以认为是cpu&#xff0c;逻辑cpu数量&#xff0c;可以在程序启动的时候设置这个数量&#xff0c;gomaxprocs函数设置) GMP 模型 在 Go 中&#xff…

力扣--动态规划1027.最长等差数列

思路分析&#xff1a; 使用动态规划的思想&#xff0c;定义二维数组dp&#xff0c;其中dp[i][j]表示以nums[i]为结尾&#xff0c;公差为(j-1000)的等差数列长度。为了适应负数的情况&#xff0c;将公差的范围设为[-1000, 1000]&#xff0c;并且加上1000作为数组索引。 初始化r…

115/200V 航空交流静变电源 115/200V机场直线加电设备

一、 115/200V 航空交流静变电源简介&#xff1a; 随着全球科技的快速发展和航空产业的不断进步&#xff0c;飞机的性能和功能要求日益提升&#xff0c;对电源设备的需求也更加严格。其中&#xff0c;“115/200V 航空交流静变电源”作为飞机的115/200V机场直线加电设备&#x…

【b站咸虾米】chapter5_uniapp-API_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 5 API 5.1 页面和路…

pytest钩子函数-pytest_runtest_logreport提取测试用例相关信息

问题&#xff1a;想在每个日志中记录测试用例开始结束时间&#xff0c;获取到测试用例的名称。 解决办法&#xff1a;使用钩子pytest_runtest_logreport 在pytest中&#xff0c;想要在conftest.py文件中获取正在运行的测试用例的名称&#xff0c;可以使用pytest_runtest_logre…

云HIS支持连锁集团化管理,1+N模式,支撑运营,管理,决策多位一体

目录 云HIS系统特色 使用简易化 连锁集团化 可扩展化 系统描述 云HIS系统优势 &#xff08;1&#xff09;客户/用户角度 &#xff08;2&#xff09;开发/运维角度 &#xff08;3&#xff09;成功应用案例 HIS分系统&#xff08;HIS子系统&#xff09; 1、医疗业务子…

马思纯后悔未反击伤害,如今瘦身重现巅峰颜值。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 近期&#xff0c;电影《热辣滚烫》在各大院线火热上映&#x…

阿里开源的Java诊断利器Arthas

一.什么是Arthas 1.为什么需要Arthas 通常&#xff0c;本地开发环境无法访问生产环境。如果在生产环境中遇到问题&#xff0c;则无法使用 IDE 远程调试。更糟糕的是&#xff0c;在生产环境中调试是不可接受的&#xff0c;因为它会暂停所有线程&#xff0c;导致服务暂停。 开…

第3集《灵峰宗论导读》

《灵峰宗论》导读。诸位法师&#xff0c;诸位同学&#xff0c;阿弥陀佛&#xff01;&#xff08;阿弥陀佛&#xff01;&#xff09; 请大家打开讲义第5面&#xff0c;悟道。 这一科我们是说明论主略史&#xff0c;在这一科当中&#xff0c;我们根据弘一大师所编的《蕅益大师年…

解析ChatGPT Plus相比chatgpt3.5有哪些优势

「ChatGPT Plus」提供更出色的对话体验和更广泛的应用能力&#xff0c;学生可以用来写作、职场人也可以用来写计划书、策划书等等&#xff0c;并且问它一些问题比搜索引擎好用多了简直。但普通人使用起来有一点门槛&#xff0c;并且升级4.0也难住了许多爱好者。 ChatGPT主要功能…

python 基础知识点(蓝桥杯python科目个人复习计划52)

今日复习内容&#xff1a;还是做题 例题1&#xff1a;四元组问题 问题描述&#xff1a; 从小学开始&#xff0c;小明就是一个非常喜欢数学的孩子。他喜欢用数学的方式解决各种问题。在他的高中时期&#xff0c;他遇到了一个非常有趣的问题&#xff0c;那就算给定一个长度为n…

Webserver解决segmentation fault(core dump)段错问问题

前言 在完成了整个项目后&#xff0c;我用make命令编译了server&#xff0c;当我运行./server文件时&#xff0c;出现了段错误 在大量的代码中找出错因并不是一件容易的事&#xff0c;尤其是对新手程序员来说。而寻找bug的过程就像是侦探调查线索追查凶手一样&#xff0c;我们…

vite搭配vue2创建工程

一、安装vite npm init vite2.8.0 vite默认支持的是vue3&#xff0c; 这里选择框架和版本vanilla&#xff0c; 方便以后自己安装vue2. 二、修改package.json 默认生成的pacakage.json文件 {"name": "vite-project","private": true,"v…

AI对话系统app开源

支持对接gpt&#xff0c;阿里云&#xff0c;腾讯云 具体看截图 后端环境&#xff1a;PHP7.4MySQL5.6 软件&#xff1a;uniapp 废话不多说直接上抗揍云链接&#xff1a; https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码

企业过二级等保采购哪家堡垒机好?

企业常见过等保&#xff0c;一般是指等保二级或者三级。这不2024开年&#xff0c;不少企业在问&#xff0c;过二级等保采购哪家堡垒机好&#xff1f;电话多少&#xff1f;这里我们小编就给大家毛遂自荐一下吧&#xff01; 企业过二级等保采购哪家堡垒机好&#xff1f; 【回答】…

2024首场沙龙|上海 · 得物技术沙龙-「稳定生产」专场报名开启!

在互联网业界&#xff0c;伴随业务需求更新、用户流量增长、创新技术迭代&#xff0c;稳定性一直是十分复杂且极具挑战性的课题。近年业界发生较多Bad case&#xff0c;得物技术团队迎难而上&#xff0c;通过制定年度全局目标、持续技术创新、深挖产线问题、严控内建质量及文化…

第四十四回 杨雄醉骂潘巧云 石秀智杀裴如海-python驱动关系型数据库

石秀在杨雄家帮忙&#xff0c;发现杨雄的妻子潘巧云跟她的师兄、和尚裴如海有情况。 潘巧云以到寺里还愿的名义&#xff0c;去见裴如海。两人见面后&#xff0c;此处省略三百字。潘巧云说晚上如果杨雄不在家&#xff0c;就烧夜香为讯号&#xff0c;你可以来。你再找一个和尚提…

llm的inference(二)

文章目录 Tokenizer分词1.单词分词法2.单字符分词法3.子词分词法BPE(字节对编码&#xff0c;Byte Pair Encoding)WordPieceUnigram Language Model(ULM) embedding的本质推理时的一些指标参考链接 Tokenizer 在使用模型前&#xff0c;都需要将sequence过一遍Tokenizer&#xf…

AI智能分析网关V4智慧工厂视频智能监管与风险预警平台建设方案

一、背景需求分析 1&#xff09;随着信息技术的迅猛发展和制造业竞争的加剧&#xff0c;智慧工厂成为了推动制造业转型升级的重要引擎。智慧工厂解决方案通过整合物联网、人工智能、大数据分析等先进技术&#xff0c;实现生产过程的智能化、自动化和高效化&#xff0c;为企业提…

Nginx——安装和反向代理

Nginx安装与应用 1.1 Nginx介绍 Nginx 是一个高性能的HTTP和反向代理服务器,特点是占有内存少&#xff0c;并发能力强 Nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态语言&#xff0c;比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合…