Nginx入门笔记

Nginx入门笔记

一、Nginx基本概念

什么是NGINX :Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,有报告表明能支持50000个并发数,事实上nginx的并发能力在同类型的网页服务器中表现较好。

具体介绍可以自行查阅。

二、代理

1、正向代理

直接访问Google网站显而是不能访问通,我们需要一个能访问同的代理服务器,做过度。不能理解的话,我们可以换个直白的说法。

比如说你去租房租,你想直接找房东区租,但是呢,我又不知道房东的联系方式,这个时候,我们就需要找房产中介,他知道啊,然后就可以顺利的租到房子。(我的理解是:我想租房租,但是没有房屋主人的联系信息,找中介租到手,我知道我租的房子是谁的)。

2、反向代理

用户访问到一个网址,然后服务器将其转发给所访问的服务器。

我是这样理解:还是租房子,我找一个二房东租房,虽然我也能租到房子,但是我始终不知道这个房子是谁的(这比喻虽然有些不合理)。

三、准备工作

1、CentOS 7安装nginx

(1). 安装必要的依赖

首先,需要安装编译 Nginx 需要的依赖。打开终端并运行以下命令来安装这些依赖:

shell 复制代码
sudo yum install -y gcc-c++ make zlib-devel pcre-devel openssl-devel

gcc-c++ 和 make 是编译工具。

zlib-devel、pcre-devel 和 openssl-devel 是 Nginx 处理 HTTP 请求所需的库的开发包。
注:要是提示

shell 复制代码
Cannot find a valid baseurl for repo: base/7/x86_64

Yum是CentOS系统中用于安装、更新和删除软件包的重要工具。然而,由于CentOS 7官方支持已于2024年结束,许多依赖的仓库和镜像源也随之停止更新,导致Yum命令频繁出现错误,如"Could not resolve host: mirrorlist.centos.org"或"Unknown error"。

阿里云提供了稳定的CentOS镜像源,可以通过修改CentOS-Base.repo文件来使用阿里云源。简便的方法就是:

bash 复制代码
cd /etc/yum.repos.d/
curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache

然后先 yum update 一下,在执行上方的安装操作。

(2)下载nginx

bash 复制代码
mkdir /opt/nginx
cd /opt/nginx
wget http://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

(3)编译安装

在编译前,你可以使用 ./configure 脚本来定义安装选项,比如安装路径、启用的模块等。

bash 复制代码
./configure --prefix=/usr/local/nginx --with-http_ssl_module

这个命令将 Nginx 安装到 /usr/local/nginx 目录,并且启用了 HTTPS 支持。根据你的需求,你可能需要添加或删除 ./configure 脚本的选项。

(4)编译并安装 Nginx

shell 复制代码
make
make install

(5)启动nginx

bash 复制代码
./usr/local/nginx/sbin/nginx

查看启动状态

要是没能访问通,应该是没开放端口:

查看防火墙端口:

shell 复制代码
# 查看端口
firewall-cmd --list-ports
# 开放端口,这里建议开放80,8080,8081,9001等端口,接下来用得到
firewall-cmd --zone=public --add-port=80/tcp --permanent 
# 重启防火墙
firewall-cmd --reload

我们将它配置成全启动操作:

shell 复制代码
ln -s /opt/nginx/nginx-1.26.2/sbin/nginx /usr/local/bin/

2、安装tomcat

可以查看该文章:jdk和tomcat安装教程

四、反向代理与负载均衡

启动tomcat服务器,这里我把tomcat服务器配置了两个一个8080端口,一个8081端口

配置nginx.conf

shell 复制代码
cd /usr/local/nginx/conf/nginx.conf

upstream myserver {
# 还可以为其添加权重,这样就是用到了负载均衡,不加的话就是均分
        server localhost:8080 weight=5;
        server localhost:8081 weight=2;
}

# 在http添加
server {
        listen 9001;
        server_name localhost;
        charset utf-8;
		# 示例一
        location ~ /nginx/ {
                proxy_pass http://localhost:8080;
        }
		# 示例二
		location / {
#               proxy_pass http://myserver;
        }
}

这里直接访问9001,就被反向到了各自的服务

五、动静分离

将静态资源放在一个服务器直接访问。

六、高可用

其中一台nginx服务器挂了另一个立刻接手。

(1)准备

两台服务器,分别安装nginx,keepalived

nginx前边已经安装过,不多说,安装keepalived

shell 复制代码
yum install keepalived -y

两台都安装上

修改keepalived配置文件:

bash 复制代码
vi keepalived.conf

第一个框先不说,第二个

字段 说明
state BACKUP BACKUP:从服务,MASTER:主服务
interface ens33 自己的网络,可以使用Ip addr查看
virtual_router_id 51 两个服务配置一至
priority 90 权值,主服务高一些,从服务低一些
virtual_ipaddress 虚拟ip 访问的IP两个服务配置一样(注意一点,我的当时直接写了一个导致无法方通,后来改了一个和我的服务器IP顺序的通行了)

第一个框中我们需要配置一个script文件:

nginx_check.sh

bash 复制代码
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx # nginx安装路径
        sleep 2
        if [ `ps -C nggx -no-header |wc -l` -eq 0 ];then
                killall keepalived
        fi
fi

做好这些就可以启动服务了

启动两个tomcat服务:

bash 复制代码
./startup.sh # 8080, 8081

启动nginx服务

bash 复制代码
nginx # ip1, ip2

启动keepalived

bash 复制代码
systemctl start keepalived.service

然后就可以直接使用虚拟ip访问了:

接下来我模拟主服务挂机了

bash 复制代码
nginx -s stop

再访问依旧可以访问。

相关推荐
YUELEI1184 小时前
Centos9 安装 nginx 及配置
nginx·centos
城南已开97910 小时前
vue部署到nginx服务器 启用gzip
服务器·vue.js·nginx
꧁༺朝花夕逝༻꧂14 小时前
随机面试--<二>
linux·运维·数据库·nginx·面试
若疆赤云online14 小时前
Nginx下搭建rtmp流媒体服务 并使用HLS或者OBS测试
运维·nginx
happlay7115 小时前
在校园网环境下被“劫持”了 HTTP 请求
前端·nginx
村头的猫Cat15 小时前
Nginx Upstream了解一下
nginx
桃花岛主7016 小时前
FFmpeg+Nginx+VLC打造M3U8直播
运维·nginx·ffmpeg
techdashen16 小时前
性能比拼: Nginx vs Apache
运维·nginx·apache
w236173460116 小时前
解析三大中间件:Nginx、Apache与Tomcat
nginx·中间件·tomcat·apache
若云止水1 天前
ngx_http_core_create_loc_conf
nginx