linux学习笔记整理: 关于linux:nginx服务器 2024/7/20;

nginx服务器:

自理解:

nginx是一种分发式服务器,统一进入的接口,并将进入的用户进行指定性分发给不同服务器地址交互;

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

京东,淘宝,12306,新浪等都在使用nginx相关服务器

安装nginx:

nginx可以独立安装在一台服务器--也可以和项目在同一个服务器。

  1. 安装nginx的依赖插件

    前提已安装阿里云插件

    yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
  2. 下载nginx
    nginx: download
  3. 创建一个目录作为nginx的安装路径
    mkdir /usr/nginx
  4. 解压
    tar -zxvf nginx-1.26.1.tar.gz
  5. 进入解压后的目录
    cd nginx-1.26.1
  6. 指定nginx的安装路径
    ./configure --prefix=/usr/nginx
  7. 编译和安装nginx
    make install

启用nginx:

nginx目录结构

conf 配置目录

html 静态资源

logs 日志目录 (用于排错)

sbin 脚本目录(启动和关闭nginx)

启动nginx
  • ./nginx 启动

  • ./nginx -s stop 关闭

  • ./nginx -s reload 重新加载配置文件

访问nginx 80

http://nginx所在的ip:nginx的端口/

若无法连接注意端口放行

配置nginx:

.../nginx/conf/nginx.conf

#user  nobody; 
#工作的线程数
worker_processes  1;
​
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
​
#pid        logs/nginx.pid;
​
​
events {
# 每个工作对象允许的连接数
worker_connections  1024;
}
​
​
http {
include       mime.types;
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"';
​
#access_log  logs/access.log  main;
​
sendfile        on;
#tcp_nopush     on;
​
#keepalive_timeout  0;
keepalive_timeout  65;
​
server {listen 81;server_name localhost;location /{root static;index main.html;
​}
}
server {#访问的端口号listen 82;server_name localhost;location /{# 代理的服务器地址proxy_pass   http://192.168.111.132:8080;}
}
​
#gzip  on;
server {listen       80; # 监听的端口号server_name  localhost; # 监听的主机名.域名
​#charset koi8-r;
​#access_log  logs/host.access.log  main;
​
​# 资源/ location / {root   html; #根目录index  index.html main.html; # 资源}
​#error_page  404              /404.html;
​# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
​# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}
​# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}
​# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}
​
​
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;
​
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
​
​
# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;
​
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;
​
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
​
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
​
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
​
}
负载均衡(轮询制):

负载均衡(Load Balance [4])其意思就是把请求分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

web项目必须搭建的为集群模式。

启用springBoot项目/TomCat部署:

将springBoot项目打包放入Linux系统中;端口号放行

使用以下代码启动springBoot打包好的文件;

java -jar 文件名.jar
配置nginx:

.../nginx/conf/nginx.conf

upstream gzx{server 172.16.7.17:8080;server 192.168.85.126:8080;}server {listen 82;server_name localhost;location /{proxy_pass   http://gzx;
​}}
重新加载nginx配置文件:

.../nginx/sbin/nginx -s reload

负载均衡(权重制):

权重策略: 服务器硬件配置不同时。

upstream gzx{#通过使用weight=3设置比重,访问3次172才会访问1次192;server 172.16.7.17:8080 weight=3;server 192.168.85.126:8080 weight=1;
}
server {listen 82;server_name localhost;location /{proxy_pass   http://gzx;
​}
}
负载均衡(IP制):
根据访问者客户的ip固定访问对应的web服务器。
upstream gzx{server 172.16.7.17:8080;server 192.168.85.126:8080;#通过访问者IP固定其访问接口;ip_hash;
}
server {listen 82;server_name localhost;location /{proxy_pass   http://gzx;
​}
}
动静分离:

动:动态资源[接口] 静:静态资源 [css js image]。

分离:把静态资源放入nginx服务器下。动态资源web服务器下。

作用: 不需要将不会改变的东西重复的从服务器调用至nginx在发送给客户;而是直接从nginx中发送给客户;

操作:

首先创建对应目录并将静态资源放入nginx中,/nignx/static/js等目录下

然后打开nginx配置文件

server{listen 81;server_name localhost;location /{proxy_pass http://使用静态资源的IP:端口;}location ~ \.js|.css|.jpg|....|.png$ {root static;}
}
HA高可用搭建:
高可用的原理keepalived:

通过部署多个nginx服务器防止主服务器崩溃无法访问;设置备用服务器

| 服务器:132 |

| nginx服务器:88 |-> |----------------|

客户->虚拟IP->:|---------------------| | 服务器:133 |...

| nginx服务器:89 |...

搭建方式:

安装keepalived

yum install -y keepalived

默认安装至/etc/keepalived下

修改keepalived.conf配置文件

主机:

global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc# ip的地址smtp_ server 192.168.111.188smtp_connect_timeout 30router_id 192.168.111.188
}
# 执行脚本
vrrp_script chk_http_port {script "/usr/local/src/nginx_check.sh"interval 2  # 每2s执行一次该脚本weight -20  # keepalive宕机  权重-20 优先级
}
​
vrrp_instance VI_1 {state MASTER # 角色interface ens33 # 网卡名virtual_router_id 51 # id 保证主从相同priority 100  # 优先级 主节点大于从节点advert_int 1authentication {auth type PASSauth pass 1111}virtual_ipaddress { 192.168.111.50 # 虚拟ip. 使用逗号隔开}track_script {chk_http_port # 追踪nginx脚本}
​
}

备用机:

global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc# ip的地址smtp_ server 192.168.111.189smtp_connect_timeout 30router_id 192.168.111.189
}
# 执行脚本
vrrp_script chk_http_port {script "/usr/local/src/nginx_check.sh"interval 2  # 每2s执行一次该脚本weight -20  # keepalive宕机  权重-20 优先级
}
​
vrrp_instance VI_1 {state BACKUP # 角色interface ens33 # 网卡名virtual_router_id 51 # id 保证主从相同priority 90  # 优先级 主节点大于从节点advert_int 1authentication {auth type PASSauth pass 1111}virtual_ipaddress { 192.168.111.50 # 虚拟ip. 使用逗号隔开}track_script {chk_http_port # 追踪nginx脚本}
​
}

(上方配置文件内地址)放于/usr/local/src/nginx_check.sh

#!/bin/bash
# 检查是否开启nginx---统计nginx进程的个数
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];thenpkill -9 keepalived
fi

解释文件:

A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        /app/nginx/sbin/nginx                #重启nginxif [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移pkill keepalived                    fi
fi

修改权限: chmod 777 nginx_check.sh

启动:

.../nginx/sbin/nginx

keepalived systemctl start|stop keepalived

访问时直接访问虚拟地址即可

yum卸载

yum remove keepalived

删除相关文件
  1. find / -name keepalived

  2. /etc/selinux/targeted/tmp/modules/100/keepalived

  3. /etc/selinux/targeted/active/modules/100/keepalived

  4. rm -rf /etc/selinux/targeted/tmp/modules/100/keepalived

  5. rm -rf /etc/selinux/targeted/active/modules/100/keepalived

卸载keeplived工作路径
  1. cd /home/hd/keepalived-1.2.18

  2. make uninstall

删除相关文件

查看相关文件: find / -name keepalived

  1. 删除相关文件

  2. rm -rf /run/lock/subsys/keepalived rm -rf /etc/keepalived rm -rf /etc/sysconfig/keepalived rm -rf /etc/rc.d/init.d/keepalived rm -rf /usr/sbin/keepalived rm -rf /usr/local/keepalived rm -rf /home/hd/keepalived-1.2.18/keepalived rm -rf /home/hd/keepalived-1.2.18/keepalived/etc/keepalived rm -rf /home/hd/keepalived-1.2.18/bin/keepalived

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

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

相关文章

Java 如何获取一个 class 的所有属性和方法

👆🏻👆🏻👆🏻关注博主,让你的代码变得更加优雅。 前言 Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率&#xf…

LeetCode 125.验证回文串 C++写法

LeetCode 125.验证回文串 C写法 思路🤔: 我们不对字符串进行删除,这样效率太低了,所以可以左右开工,下标begin和end遇到不是字母数字字符的就跳过,当两边都是字母就进行比对,一样就继续往后走&a…

sqlserver 跨服务器进行数据增删改查

--连接远程服务器 exec sp_addlinkedserver 目标服务器名(自定义取名), , SQLOLEDB , 192.168.180.18(目标服务器IP) --登录远程服务器 exec sp_addlinkedsrvlogin 目标服务器名, false ,null, (用户名&#xff09…

PCL 批量处理点云文件

系列文章目录 文章目录 系列文章目录前言一、PCL是什么?二、配置PCL环境三、使用步骤1.引入库2.主函数 总结 前言 点云处理时往往会需要对多个点云进行处理,比如在预处理,保存点云时。下面提供一个简单的点云批量转换例子,PCD文件…

Midjourney绘画提示词精选

Midjourney绘画提示词精选 在探索Midjourney这一强大的AI绘画工具时,选择合适的提示词是创作出令人惊艳作品的关键。这些提示词不仅能够帮助Midjourney理解你的创作意图,还能引导它生成出符合你期望的图像。以下是对Midjourney绘画提示词的精选与解析&a…

power bi 度量值相关函数

power bi 度量值相关函数 1. 度量值的好处2. 度量值上下文3. calculate() 函数4. 度量值存储方式 1. 度量值的好处 度量值不会增加一列,不会修改表格度量值自带筛选功能 2. 度量值上下文 新建行和新建度量值的区别 度量值是筛选上下文:度量值天生具有…

机器学习 | 阿里云安全恶意程序检测

目录 一、数据探索1.1 数据说明1.2 训练集数据探索1.2.1 数据特征类型1.2.2 数据分布1.2.3 缺失值1.2.4 异常值1.2.5 标签分布探索 1.3 测试集探索1.3.1 数据信息1.3.2 缺失值1.3.3 数据分布1.3.4 异常值 1.4 数据集联合分析1.4.1 file_id 分析1.4.2 API 分析 二、特征工程与基…

SimGCL和XSimGCL

SimGCL 动机 传统的SGL(图自监督学习)使得模型可以自行发掘任务特征,解决了数据稀疏和长尾分布的问题,SGL采用节点dropout、边dropout和随机游走三种方式对图结构进行扰动(图增强)进行对比学习,可以有效提高性能 SGL主要解决传统推荐系统面临的数据稀疏和长尾分布问题。…

k8s中pod创建过程

1,客户端向apiserver发起一个create pod请求 2,apiserver接收到pod创建请求后,生成一个包含创建信息的yaml 3,apiserver将yaml信息写入etcd数据库 4,根据scheduler调度器为pod分配node主机 5,node kubelet检…

无监督目标检测:挑战与机遇的双重奏

无监督目标检测:挑战与机遇的双重奏 无监督目标检测是计算机视觉领域中一个前沿且充满挑战的研究课题。它旨在无需大量标注数据的情况下,识别图像中的目标。这一技术的发展,对于减少人工标注成本、提高检测效率具有重要意义。本文将深入探讨…

2024中国大学生算法设计超级联赛(1)

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,彩笔ACMer一枚。 🏀所属专栏:杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 📢📢📢传送门 A - 循环位移解…

分治算法(算法篇)

算法之分治算法 分治算法 概念: 分治算法也是一种思想策略,分治算法就是将大问题不断地分成小问题解决后再重新构建原问题地解。一般地分治算法的时间复杂度为O(NlogN)分:递归解决较小的问题;治:然后,从…

linux 网络子系统

__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数,它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析: 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…

【简历】贵州某二本学院:JAVA秋招简历指导,简历通过率基本为0

注:为保证用户信息安全,姓名和学校等信息已经进行同层次变更,内容部分细节也进行了部分隐藏 简历说明 这是一份某师范学院25届二本同学的Java简历。这种就是每年都会出现的少量的完全不知道简历应该怎么写的同学。 所以这个简历&#xff0…

Java实现七大排序(一)

目录 一.插入排序 1.直接插入排序 2.希尔排序 二.选择排序 1.选择排序 2.堆排序 三.总结 一.插入排序 1.直接插入排序 直接插入排序的原理与线下玩扑克牌类似。我们拿到一张牌后要排序,方法就是一张一张对。直接插入排序也是这样的,我们得到一张…

虚拟机迁移报错:虚拟机版本与主机“x.x.x.x”的版本不兼容

1.虚拟机在VCenter上从一个ESXi迁移到另一个ESXi上时报错:虚拟机版本与主机“x.x.x.x”的版本不兼容。 2.例如从10.0.128.13的ESXi上迁移到10.0.128.11的ESXi上。点击10.0.128.10上的任意一台虚拟机,查看虚拟机版本。 3.确认要迁移的虚拟机磁盘所在位…

java28-SpringMVC

概述 Spring框架是分层的全栈式的轻量级开发框架,以IOC和AOP为核心,地址https://spring.io/ 组成 Data Access/Integration(数据访问/继承) JDBC模块:提供一个JDBC抽象层,大幅度减少了在开发中对数据库…

【Webpack】HMR 热更新

HMR全称Hot Module Replacement,可以理解为模块热替换,指在应用程序运行过程中,替换、添加、删除模块,而无需重新刷新整个应用。 不使用热更新,我们在应用运行过程中修改了某个模块,通过自动刷新会导致整个…

MySQL--索引(3)

1.索引创建注意点 选择合适的字段 1.不为 NULL 的字段 索引字段的数据应该尽量不为 NULL,因为对于数据为 NULL 的字段,数据库较难优化。如果字段频繁被查询,但又避免不了为 NULL,建议使用 0,1,true,false 这样语义较为清晰的短值或…