nginx

2023-12-13 20:10:54

1.nginx

1.nginx应用场景

http服务器? ? Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
虚拟主机? ? ? 可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
反向代理,负载均衡? ? ?当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
nginz? ?中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截

2.nginx优点

跨平台、配置简单
非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发
内存消耗小: 开启 10 个 Nginx 才占 150M 内存。
成本低廉,且开源。
稳定性高,宕机的概率非常小。
内置的健康检查功能: 如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上

3.nginx和apache的区别

轻量级,同样起web服务,比apache占用更少的内存和资源

抗并发,nginx 处理请求是并步非阻塞的,而apache是阻塞性的,在高并发下nginx能保持滴资源,低消耗,高性能

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

最核心的区别在于apache是同步多进程模型,一个连接对应一个程序,nginx是异步的,多连接可以对应一个进程

4.Nginx服务的主配置文件

nginx.conf

1、全局块:全局配置,对全局生效;
2、events块:配置影响 Nginx 服务器与用户的网络连接;
3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
4、server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;
5、location块:用于配置匹配的 uri ;
6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

2.nginx所需环境

1.编译安装nginx服务

1.将nginx文件安装到/opt下,关闭安全措施

systemctl stop firewalld

setenforce 0

2.安装所需依赖包

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

3.创建运行用户、组

useradd -M -s /sbin/nologin nginx

4.编译安装nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

[root@localhost nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

指定nginx的安装路径

指定用户名

指定组名

启用 http_stub_status_module 模块以支持状态统计
?


?

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

让系统识别nginx的操作命令

5.检查、启动、重启、停止 nginx服务

nginx -t ? 检查配置文件是否配置正确?

nginx ? 启动?

? ??? ??? ?
?? ??? ??? ??? ??? ??? ?
cat /usr/local/nginx/logs/nginx.pid?? ??? ?先查看nginx的PID号


停止

kill -3 <PID号>

kill -s QUIT <PID号>

killall -3 nginx

killall -s QUIT nginx


重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx


日志分割,重新打开日志文件
kill -USR1 <PID号>

平滑升级
kill -USR2 <PID号>


新版本升级:
tar -zxvf nginx-1.xx.xx.tar.gz?
cd nginx-1.xx.xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module

6.添加nginx方法

方法一 脚本

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;

stop)
  kill -s QUIT $(cat $PID)
;;

restart)
  $0 stop
  $0 start
;;

reload)
  kill -s HUP $(cat $PID)
;;

*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1

esac
exit 0

chmod +x /etc/init.d/nginx?

添加执行权限

systemctl start nginx?

启动服务
systemctl status nginx

查看服务状态

方法二? 修改配置

vim /lib/systemd/system/nginx.service
[Unit]  
Description=nginx     描述服务
After=network.target   依赖,当依赖的服务启动之后再启动自定义的服务
[Service]              服务运行参数的设置
Type=forking            是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程
PIDFile=/usr/local/nginx/logs/nginx.pid        
ExecStart=/usr/local/nginx/sbin/nginx   为服务的具体运行命令      
ExecReload=/bin/kill -s HUP $MAINPID  为重启命令    
ExecStop=/bin/kill -s QUIT $MAINPID   为停止命令
PrivateTmp=true                      表示给服务分配独立的临时空间
[Install]                             服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target 

vim /lib/systemd/system/nginx.service

chmod 754 /lib/systemd/system/nginx.service? ?

赋权
systemctl start nginx.service
systemctl enable nginx.service

?

3.实验

访问状态统计配置

/usr/local/nginx/sbin/nginx -V

查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块

cat /opt/nginx-1.12.0/auto/options | grep YES

可查看 nginx 已安装的所有模块

修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak


vim /usr/local/nginx/conf/nginx.conf

##添加 stub_status 配置##
?? ??? ?location /status { ?? ??? ??? ??? ??? ?#访问位置为/status
?? ??? ??? ?stub_status on; ?? ??? ??? ??? ?#打开状态统计功能
?? ??? ??? ?access_log off; ?? ??? ??? ??? ?#关闭此位置的日志记录

systemctl restart nginx

重启服务,访问测试
nginx -t?

查看nginx服务状态

浏览器访问 http://192.168.80.10/status

Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数。
server accepts handled requests :表示已经处理的连接信息
三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)
Reading:表示当前正在从客户端读取数据的连接数。
Writing:表示当前正在向客户端写入数据的连接数。
Waiting:表示当前空闲并等待请求的连接数。

可 curl -Ls http://192.168.17.130/status 结合 awk与if 语句进行性能监控

?基于授权的访问控制

生成用户密码认证文件
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

vim /usr/local/nginx/conf/nginx.conf

修改主配置文件相对应目录,添加认证配置项

auth_basic "secret";?? ??? ??? ??? ?#设置密码提示框文字信息

重启服务,访问测试
nginx -t
systemctl restart nginx

浏览器访问 http://192.168.17.130

文章来源:https://blog.csdn.net/m0_59332472/article/details/134836384
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。