目录
5.HTTP返回状态码(status-code),由3位数字组成(***)
简介:
Nginx(发音类似于"engine X")是一款高性能的开源Web服务器软件,也可以作为反向代理服务器、负载均衡器和HTTP缓存服务器使用。由俄罗斯的程序员Igor Sysoev开发并于2004年首次发布。
Nginx的设计目标是提供高性能、稳定性和低资源消耗的服务器解决方案。相比于传统的Apache服务器,Nginx采用了更为轻量级的多进程模型,更加高效地处理并发请求。它能够快速地响应大量的并发连接,并能够在不增加服务器资源的情况下扩展。
除了作为Web服务器,Nginx还可以作为反向代理服务器使用。通过将请求转发到不同的后端服务器,Nginx可以帮助实现负载均衡,提高系统的可靠性和性能。此外,Nginx还支持缓存静态文件和动态内容,从而减轻后端服务器的负载。但是在动态页面处理能力较弱。所以一般都交给tomcat来处理。
Nginx的配置简单灵活,支持通过配置文件进行灵活的定制和扩展。它的模块化架构允许用户根据需要选择和添加各种功能模块,使得Nginx成为一个非常灵活的服务器解决方案。
总之,Nginx是一个高性能、稳定性强、资源消耗低的Web服务器软件,专为性能优化而开发的。最大的优点是稳定性和地系统资源消耗,和对https并发连接、反向代理的高处理能力,单台物理服务器可支持30000~50000的并发访问。具有良好的扩展性和灵活的配置。它在大型网站和高流量环境中广泛应用,是许多企业和个人首选的服务器解决方案。
百度、淘宝、京东、新浪、腾讯等都是用的nginx.
安装nginx
nginx最新的稳定版为1.24.0版本
将nginx安装包下载好(使用xshell工具直接拖,或者rz上传)
设置yum源安装依赖工具pcre-devel(支持正则表达式) zlib-devel(支持压缩)gcc gcc-c++ make libtool zlib pcre openssl openssl-devel
使用之前一般会创建运行用户,和运行组
useradd -M -s /sbin/nologin nginx
#一般上面是必选的,其他自行选择。
使用的是阿里云yum源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel
1、tar xf nginx.1.24.0.tar.gz -C /usr/src
2、cd /usr/src/nginx.1.24.0
3、
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
可选模块添加,自行支配。
--with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi
5、
添加符号链接
或者将nginx添加永久环境变量
将nginx添加到永久环境变量/etc/profile-CSDN博客
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
6、 查配置文件语法是否正确
nginx -t
--with-http_stub_status_module(启动状态统计模块)
关于nginx源代码安装选项
启动nginx:nginx 与 systemctl start nginx || service nginx start 效果一样
重新加载nginx:killall -s HUP nginx systemctl restart nginx || systemctl reload nginx 与 service nginx restart 效果一样
退出关闭nginx:killall -s QUIT nginx systemctl stop nginx || service nginx stop效果一样
查看版本:nginx -v 查看模块:nginx -V
将nginx添加为系统服务
源代码安装nginx如何添加系统服务使用systemctl命令-CSDN博客
nginx特点
-
高并发、高性能:nginx采用异步非阻塞的事件驱动架构,能够处理大量并发连接,同时具有较高的请求处理速度和吞吐量。(单台服务器可支持30000-50000个并发访问量)
-
资源占用少:nginx的内存占用量相对较小,并且能够有效地利用服务器的硬件资源。
-
热部署:nginx支持在运行时进行配置文件的修改并生效,无需重启服务,能够实现零停机更新。
-
高可靠性:nginx具有故障恢复能力,支持负载均衡、故障转移和容错,提高了系统的可靠性和稳定性。
-
灵活的配置:nginx的配置文件简洁明了,支持灵活的URL重写、反向代理、缓存等功能,并且具有强大的模块扩展性。
-
良好的可扩展性:nginx的模块化设计使得开发人员可以根据需求添加自定义模块,扩展nginx的功能。
-
网络协议支持广泛:nginx支持HTTP、HTTPS、TCP、UDP等多种网络协议,并且能够通过配置实现高级的负载均衡、反向代理、缓存等功能。
-
社区活跃:nginx拥有活跃的开源社区,能够及时修复漏洞、提供技术支持和更新版本。
总的来说,nginx具有高性能、低资源占用、高可靠性、灵活配置、良好的可扩展性等特点,因此被广泛应用于构建高性能和可靠的Web服务。
nginx优点:
工作在七层之上,针对HTTP做分流策略,正则规则haproxy更灵活
对网络的稳定性依赖小
安装配置简单
高负载高并发低消耗
不仅能做代理,还可以做web服务器
还能缓存静态网页和图片
社区活跃,第三方模块非常多
缺点:
适应范围较小,仅能支持http、https、Email协议。
对后端服务器的健康检查,只支持通过端口检测,不支持url来检测
nginx的基础特性:
模块化设计,较好的扩展性
高可靠性
支持热部署,不停机更新配置文件,升级版本,更换日志文件
低内存消耗,10000个keep-alive下的非活动连接,仅需2.5M内存
event-driven(事件驱动),aio(异步非阻塞),mmap(内存映射),sendfile(代理转发)
基本功能:
静态资源的web服务器
http协议的反向代理
fastcgi、uWSGI(python)
pop3/imap4邮件反向代理
模块化,zip、ssl等模块
nginx进程结构:**
Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程。
master:(管理者)
读取nginx配置文件,验证有效性和正确性
建立、绑定和关闭socket连接(它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。)
接受外界指令,比如重启、开、关服务
不中断服务,平滑升级
处理perl脚本
socket 安全套接字:进程通信使用的接口
worker:(工作者:处理用户的请求,返回结果)
接受处理客户的请求(按模块区分)
I/O调用
与后端服务器通信
缓存数据
发送请求结果
接受主程序的指令
nginx模块:
核心模块:core module
标准模块:
ngx_http_* web服務
ngx_mail_*
ngx_upstream_* 代理服务器:***
第三方模块:
nginx的安装包:
源码包下载:http://nginx.org/en/download.html (mainline:开发版 stable:稳定版)
rpm包的yum源:http://nginx.org/packages/centos/7/x86_64/
nginx配置文件
源代码安装的nginx的主配置文件在/usr/local/nginx/conf/nginx.conf中,1、包括全局配置、2、events(I/O)事件配置与3、http配置(yum安装的nginx配置文件在/etc/nginx/nginx.conf)
配置语句的格式为 "关键字" 值;(末尾以分号表示介绍)
全局配置
#user nobody; 运行程序用户
worker_processes 6; 工作进程数量
#error_log logs/error.log; 错误日志文件的位置
pid logs/nginx.pid pid文件的位置
events {
use epoll; //使用epoll 模型
worker_connections 4096; //每进程处理4096个连接
使用 “events{}” 界定标记用来指定Nginx 进程的1/0响应模型、每个进程的连接数等设置。 对于2.6及以上版本的内核,建议使用epoll模型以提高性能;每个进程的连接数应根据实际需要来 定, 一般在10000以下(默认为1024)。当然具体还要看服务器硬件、网络带宽等物理条件的性能表现。
http 配置
http {
include mime.types
default_type application/octet-stream;
log_format main "$remote_addr………………"
access_log logs/access.log main; 访问日志位置
sendfile on; 开启高效传输文件模式
keepalive_timeout 65; 连接保持超时
server { Web 服务的监听配置
listen 80; 监听地址及端口
server_name www.jingyu.com; 网站名称
charset utf-8; 网页的默认字符集
location / { 根目录配置
root html; 网站根目录的位置,相对于安装目录
index index.php index.html index.htm; 默认首页(索引页) }
error_page 500 502 503 504 /50x.html 内部错误的反馈页面
location = /50x.html {
root html; } } }
使 用 “http{}” 界定标记用于设定HTTP 服务器,包括访问日志、HTTP 端口、网页目录、默认 字符集、连接保持,以及后面要讲到的虚拟Web 主机、PHP 解析等网站全局设置,其中大部分配置
语句都包含在子界定标记 “server{}” 内 。“server {}”代表一个具体的网站设置。
5.HTTP返回状态码(status-code),由3位数字组成(***)
200 请求成功
201 上传文件成功
301 永久重定向(redirect)跳转、重分发
302,307 临时重定向(redirect)
304 浏览器缓存
403 请求不到首页,没有权限
404 请求的资源在前端查明不存在
405 请求方法不支持
500 服务器的内部错误,程序错误
502 请求的资源前端有记录指向后端数据库,却找不到后端资源
503 服务暂时不可用
504 请求超时
nginx访问状态统计 (安装时启动状态统计模块配置编译添加--with-http_stub_status_module 来启用此模块)
主要信息在nginx.conf配置文件中
location /status { 访问位置为、status
……………………
stub_status on; 打开状态统计功能
access log off; 关闭此位置的日志记录 }
之后重启nginx服务
在浏览器中输入域名或者地址即可查看访问状态是交给之后的zabbix监控的。