目录
3.nginx的安装部署(基于Centos-stream操作系统)
1.简介
nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而得到广泛使用。当它用作Web服务器时,相比较于apache,它在处理静态文件方面效率更高,具有高并发、占用资源少的优点。其次它作为反向代理的时候,可以实现负载均衡。本篇文章主要从这两个主要功能来介绍nginx
2.正向代理与反向代理
这里插播一条介绍,nginx一大功能是反向代理,什么是反向代理?而与之相对的正向代理又是什么?两者又有何区别?
正向代理与反向代理部署位置都是在客户端与服务端之间,正向代理代理的是客户端,反向代理代理的是服务端。正向代理可以隐藏客户端信息,解决访问限制的问题,可以用缓存提高访问效率,也可以访问一些正常无法访问的网站(譬如翻墙外网等)。反向代理隐藏服务端网络信息,起到一个安全保护的作用,且可以实现负载均衡。
3.nginx的安装部署(基于Centos-stream操作系统)
nginx的安装很简单,这里介绍的是使用yum一键安装所需软件包,然后进行编译安装。所需要安装的软件有:zlib、zlib-devel、pcre、pcre-devel、openssl、openssl-devel、GCC
1、使用如下命令进行安装软件包
yum install -y zlib zlib-devel openssl openssl-devel gcc pcre pcre-devel
2、软件包安装完成后,从以下网站下载nginx的tar包,可自定义下载路径,然后解压
wget http://nginx.org/download/nginx-1.21.6.tar.gz
3、解压命令
tar -zxvf nginx-1.21.6.tar.gz
4、解压后进入nginx-1.21.6目录,由于后续可能需要用到安全认证和状态监控功能,所以可先执行如下命令安装两个模块http_stub_status_module 和http_ssl_module
./configure --with-http_stub_status_module --with-http_ssl_module
5、然后开始安装
make && make install
6、安装完成后,nginx服务默认安装路径在/usr/local/nginx/,如下命令启动nginx服务
/usr/local/nginx/sbin/nginx
7、nginx常用命令
/usr/local/nginx/sbin/nginx -s reload //重启nginx服务,配置文件修改后重新加载
/usr/local/nginx/sbin/nginx -s stop //停止nginx服务
/usr/local/nginx/sbin/nginx -t //检查nginx配置文件
/usr/local/nginx/sbin/nginx -v //查看nginx版本号
/usr/local/nginx/sbin/nginx -V //查看nginx已经编译的参数,可以看到这里有刚刚安装的两
个模块http_stub_status和http_ssl
4.nginx配置文件详解
以下是默认安装的nginx默认配置文件,nginx配置文件路径:/usr/local/nginx/conf/nginx.conf
nginx配置文件最外层的块是main,main包含events块、http块,而http块中有upstream和一个或多个server块,server块中又有一个或多个location块
//全局配置
#user nobody; //默认用户,nobody是一个不能登录的用户,只能看到所有人均可读可写的文
件,用来完成特定的任务,不能登录是为了安全,防止入侵
worker_processes 1; //工作进程,nginx一般是一个master进程加一个或多个工作进程,这里定义工
作进程数量。该参数一般建议与CPU数量一致
#error_log logs/error.log; //错误日志路径,以下可定义错误日志级别,debug模式日志最详细
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; //进程id文件,nginx启动时记载进程号的文件
events {
use epoll //定义nginx工作模式,参数有select/poll/epoll/kqueue/等,epoll是
高效的网络IO模式,一般在linux系统使用;kqueue一般在FreeBSD系统
中使用
worker_connections 1024; //每个工作进程允许的最大连接数,nginx的最大客户端连接数
=worker_connections*worker_processes
}
http {
include mime.types; //引用mime.types文件中的mime类型定义
default_type application/octet-stream; //定义默认类型为任意的二进制流
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; //定义日志文件内容格
式,main为此格式名称
#access_log logs/access.log main; //日志文件路径并引用上面定义的名为main的日志格式
sendfile on; //高效文件传输模式开关,提高文件读写效率,一般在做Web服务器时打开开关
#tcp_nopush on; //sendfile开关打开时使用,用来防止网络堵塞
#keepalive_timeout 0;
keepalive_timeout 65; //客户端连接保持的超时时间,超出该时间服务端断开与客户端的连接
#gzip on; //压缩打包传输开关
//一个server块就是一个虚拟主机
server {
listen 80; //监听端口,默认80
server_name localhost; //服务名称ip或者域名
#charset koi8-r; //网页编码格式
#access_log logs/host.access.log main; //日志路径并引用日志格式 main
location / {
root html; //网页发布文件的根目录
index index.html index.htm; //网页发布文件
}
//下面一段额外添加,为nginx作为反向代理时的负载均衡配置,用upstream块实现
upstream test {
ip_hash //负载均衡调度算法,默认为Weight轮询,还有ip_hash/url_hash/fair算法
server 192.168.91.128:80 weight=1; //服务器ip端口配置,Weight轮询算法权重