nginx续1:

八、虚拟主机配置

基于域名的虚拟主机
[root@server2 ~]# ps -au|grep nginx              //查看进程
修改Nginx服务配置,添加相关虚拟主机配置如下
1.    [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
2.    .. ..
3.    server {
4.            listen       80;                                      //端口
5.            server_name  www.a.com;                            //域名
6.    auth_basic "Input Password:";                        //认证提示符
7.            auth_basic_user_file "/usr/local/nginx/pass";        //认证密码文件
8.    location / {
9.                root   html;                                    //指定网站根路径
10.                index  index.html index.htm;
11.           }
12.           
13.    }
14.    … …
15.    
16.        server {
17.            listen  80;                                        //端口
18.            server_name  www.b.com;                            //域名
19.    location / { 
20.    root   web;                                 //指定网站根路径
21.    index  index.html index.htm;
22.    }
[root@localhost ~]# mkdir /usr/local/nginx/web                       //创建网页根目录
[root@localhost ~]# echo "web" > /usr/local/nginx/web/index.html             //写测试页面
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload       //重新加载
客户机测试:
[root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.134   www.a.com www.b.com


九、nginx反向代理配置

⽤户直接访问反向代理服务器就可以获得⽬标服务器(后端服务器)的资源。

1、修改配置

在配置⽂件中添加⼀⾏反向代理块指令(proxy_pass),表示当访问本机地址 192.168.1.125的 80 端⼝时即可跳转到后端服务器 192.168.1.100 的 80 端⼝上。


[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.1.100:80;
        }
[root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload


2、建立后端服务器

去server1:
也安装了nginx
[root@server1 ~]# vim /usr/local/nginx/html/index.html 
这里是192.168.1.100

3、访问测试

浏览器测试,输入server2的地址192.168.1.125

十、nginx访问IP黑名单

1、修改配置

[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
    server {
        listen       80;
        server_name  localhost;
        allow 192.168.1.225;                 //允许192.168.1.225用户访问
        deny 192.168.1.0/24;               //拒绝1.0网段的用户访问
        deny all;                                    //拒绝所有,哪条在前哪条优先级高
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://192.168.1.100:80;
        }
[root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload

2、真机浏览器访问

因为当前服务器拒绝了 1.0 ⽹段的⽤户访问,⽽本机浏览器正是通过 1.254 ⽹关与服务器建⽴连接,所以浏览器被拒绝访问了,显示 403 错误信息。


3、另找一台虚拟机(192.168.1.225)访问

[root@web ~]# curl 192.168.1.125
我是192.168.1.100                  //访问成功

十一、负载均衡

1、环境准备

四台虚拟机都安装了nginx
staticserver  ip  192.168.1.250
server1         ip   192.168.1.100
server2         ip   192.168.1.125
server3         ip   192.168.1.225
写一下测试页面,便于区分
[root@staticserver ~]# echo "I am static server" > /usr/local/nginx/html/index.html 
[root@server1 ~]# echo "I am server1" > /usr/local/nginx/html/index.html 
[root@server2 ~]# echo "I am server2" > /usr/local/nginx/html/index.html
[root@server3 ~]# echo "I am server3" > /usr/local/nginx/html/index.html


2、配置,在staticserver里


[root@staticserver ~]# vim /usr/local/nginx/conf/nginx.conf
   upstream servers {                                       //#upstream模块要写到http的里面
                   server 192.168.1.100:80;
                   server 192.168.1.125:80;
                   server 192.168.1.225:80;
         }


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
#            root   html;
#            index  index.html index.htm;
        proxy_pass http://servers;              #通过proxy_pass将用户的请求转发给servers集群,他的语句优先级高于root,所以放root前面和后面都可以
[root@staticserver ~]# /usr/local/nginx/sbin/nginx -s reload

3、访问测试

真机浏览器访问staticserverIP192.168.1.250,可以看到另外三台主机的页面,点击刷新即可

4、配置upstream服务器集群池属性

1)七层负载均衡基础配置

2)负载均衡状态

在服务器组的组内服务器后填写该服务器的状态,如:

3)负载均衡策略

(1)轮询

(2)weight 加权

(3)ip_hash

当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。
这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。
注意: 使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置后端服务器权重等方法将不起作用。

(4)least_conn 

least_conn:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,leastconn这种方式就可以达到更好的负载均衡效果。

(5)url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用ur_hash,可以使得同一个url (也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以从缓存中读取。


十二、平滑升级(不停止服务的情况下)

[root@server1 ~]# /usr/local/nginx/sbin/nginx                    //先保证原有服务使启动的
[root@server1 ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz        //下载新版本
[root@server1 ~]# tar -zxvf nginx-1.27.0.tar.gz                         //解压 
[root@server1 nginx-1.27.0]# cd nginx-1.27.0/
[root@server1 nginx-1.27.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream   //还是原来的位置
[root@server1 nginx-1.27.0]# make && make install
[root@server1 nginx-1.27.0]# ls /usr/local/nginx/sbin/
nginx  nginx.old
[root@server1 nginx-1.27.0]# /usr/local/nginx/sbin/nginx -v         //查看版本
nginx version: nginx/1.27.0 
[root@server1 nginx-1.27.0]# /usr/local/nginx/sbin/nginx.old -v          //旧版本
nginx version: nginx/1.26.1
[root@server1 nginx-1.27.0]# ps -aux|grep nginx             //查看进程,找到老版本pid编号
root       7838  0.0  0.2  46096  1144 ?        Ss   13:40   0:00 nginx: master process ./sbin/nginx
nginx      7839  0.0  0.4  46544  2152 ?        S    13:40   0:00 nginx: worker process
root      10940  0.0  0.2 112720   968 pts/2    R+   16:34   0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -USR2 7838          //使用kill -USR2 启用新版本的Nginx的软件,7838是老版本的pid编号
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root       7838  0.0  0.2  46096  1332 ?        Ss   13:40   0:00 nginx: master process ./sbin/nginx
nginx      7839  0.0  0.4  46544  2152 ?        S    13:40   0:00 nginx: worker process
root      10941  0.0  0.6  46096  3324 ?        S    16:37   0:00 nginx: master process ./sbin/nginx
nginx     10942  0.0  0.3  46548  1916 ?        S    16:37   0:00 nginx: worker process
root      10944  0.0  0.2 112720   964 pts/2    R+   16:37   0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -WINCH 7839                  //优雅关闭子进程
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root       7838  0.0  0.2  46096  1332 ?        Ss   13:40   0:00 nginx: master process ./sbin/nginx
root      10941  0.0  0.6  46096  3324 ?        S    16:37   0:00 nginx: master process ./sbin/nginx
nginx     10942  0.0  0.3  46548  1916 ?        S    16:37   0:00 nginx: worker process
nginx     10947  0.0  0.3  46544  1908 ?        S    16:39   0:00 nginx: worker process
root      10949  0.0  0.2 112720   964 pts/2    R+   16:39   0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# kill -QUIT 7838                     //优雅关闭主进程
[root@server1 nginx-1.27.0]# ps -aux|grep nginx
root      10941  0.0  0.6  46096  3324 ?        S    16:37   0:00 nginx: master process ./sbin/nginx
nginx     10942  0.0  0.3  46548  1916 ?        S    16:37   0:00 nginx: worker process
root      10953  0.0  0.2 112720   968 pts/2    R+   16:40   0:00 grep --color=auto nginx
[root@server1 nginx-1.27.0]# curl -I localhost                   //使用curl 查看当前服务器的版本
HTTP/1.1 200 OK
Server: nginx/1.27.0                       //已经更新成1.27版本了
Date: Tue, 30 Jul 2024 08:41:05 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 13
Last-Modified: Tue, 30 Jul 2024 07:02:16 GMT
Connection: keep-alive
ETag: "66a88ff8-d"
Accept-Ranges: bytes

十三、nginx代理tomcat10

配置tomcat10 运行环境       tomcat9可以在jdk8的环境运行
tomcat10必须在jdk17以上的版本运行

[root@server1 ~]# tar -xf jdk-22_linux-x64_bin.tar.gz 
[root@server1 ~]# mv jdk-22.0.1/ /usr/local/jdk/                 //把解压后的文件移动到/usr/local/jdk/方便管理配置
[root@server1 ~]# cd /usr/local/jdk/
[root@server1 jdk]# sed -i '$aexport JAVA_HOME=/usr/local/jdk/' /etc/profile
[root@server1 jdk]# sed -i '$aPATH=$JAVA_HOME/bin:$PATH' /etc/profile
[root@server1 jdk]# source /etc/profile                   //使配置文件生效
[root@server1 jdk]# java -version                    //查看版本
java version "22.0.1" 2024-04-16
Java(TM) SE Runtime Environment (build 22.0.1+8-16)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【SuperMap iServer 服务列表未授权访问漏洞】怎么处理

今天遇到这样一个安全问题需要处理: 漏洞名称: 接口未授权访问。 漏洞URL: https://****/iserver/services 漏洞描述: 多个服务存在未授权访问,可访问清除缓存等功能。 查阅官方社区发现有两个解决办法&#xff1…

在 Vim 编辑器中,如果某个单词被意外地高亮显示,使用:noh可以取消高亮显示

文章目录 1、问题出现的背景2、解决办法 1、问题出现的背景 配置镜像加速器,修改 /etc/docker/daemon.json 目录下的文件,不小心高亮显示https,产生问题的步骤是,我先是按esc键退出vim的编辑模式,然后在https的前面按…

《计算机应用文摘》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《计算机应用文摘》是不是核心期刊? 答:不是,是维普收录的正规学术期刊。 问:《计算机应用文摘》级别? 答:省级。主管单位:重庆西南信息有限公司 主办单位&#x…

需求跟踪矩阵:项目管理的“指南针”

前言 在项目的茫茫大海中,需求如同潮汐般汹涌澎湃,而我们则是那驾船的舵手,需要在波涛汹涌中找到正确的航向。如何确保每一个需求都能得到满足,同时又不偏离项目的主线?这就需要我们借助一种强大的工具——需求跟踪矩…

springboot超市商品管理系统-计算机毕业设计源码55289

摘 要 随着信息技术的快速发展和普及,传统的超市管理模式已经无法满足现代商业的需求。为了提高超市的管理效率,优化商品销售流程,本文提出了一种基于SpringBoot框架的超市商品管理系统。该系统结合了现代软件开发技术,包括MySQL数…

【策略工厂模式】记录策略工厂模式简单实现

策略工厂模式 1. 需求背景2. 代码实现2.1 定义基类接口2.2 排序策略接口定义2.3 定义抽象类,实现策略接口2.4 具体的排序策略实现类2.5 实现策略工厂类2.6 控制类 3. 启动测试4. 总结 1. 需求背景 现在需要你创建一个策略工厂类,来根据策略实现各种排序…

第三周:网络应用(上)

一、网络应用(层)内容概述 我们已经知道,Internet的体系结构是符合TCP/IP协议栈的,而“应用层”就在这个协议的最上层。 本讲内容包括: 二、网络应用的基本原理 常见网络应用包括: 问:网络应…

【机器学习】正规方程的简单介绍以及如何使用Scikit-Learn实现基于正规方程的闭式解线性回归

引言 Scikit-learn 是一个开源的机器学习库,它支持 Python 编程语言。它提供了多种机器学习算法的实现,并用于数据挖掘和数据分析 文章目录 引言一、正规方程的定义二、正规方程的原理三、使用 Scikit-Learn 实现基于正规方程的闭式解线性回归3.1 工具3.…

如何使用rdma-core来实现RDMA操作

rdma-core 是一个开源项目,为远程直接内存访问(RDMA)提供用户空间的支持。它包括 RDMA 设备的驱动程序、库和工具,旨在简化 RDMA 应用的开发和部署。 基础知识参考博文: 一文带你了解什么是RDMA RDMA 高性能架构基本…

“论数据分片技术及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的…

快速入门 Spring Security

1 认证授权 认证(Authentication):可以理解为登录,验证访问者的身份。包括用户名密码认证、手机号短信验证码认证、指纹识别认证、面容识别认证等等授权(Authorization):授权发生在系统完成身份…

springboot校园商店配送系统-计算机毕业设计源码68448

摘要 本文详细阐述了基于Spring Boot框架的校园商店配送系统的设计与实现过程。该系统针对校园内的用户需求,整合了用户注册与登录、商品浏览与购买、订单管理、配送追踪、用户反馈收集以及后台管理等功能,为校园内的普通用户、商家、配送员和管理员提供…

用深度学习改进乳腺癌MRI诊断| 文献速递--AI辅助的放射影像疾病诊断

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 用深度学习改进乳腺癌MRI诊断 01 文献速递介绍 乳腺磁共振成像(MRI)是一种检测乳腺癌的高度敏感的方式,报告的敏感性超过80%。传统上,其在筛查…

教程系列4 | 趋动云『社区项目』极速体验 LivePortrait 人脸表情“移花接木”大法

LivePortrait LivePortrait 由快手可灵大模型团队开源,只需 1 张原图就能生成动态视频。 LivePortrait 的核心优势在于其卓越的表情"迁移"技术,能够令静态图像中的人物瞬间焕发活力,无论是眨眼、微笑还是转头,皆栩栩如…

spaCy语言模型下载

spaCy 是一个基于 Python 编写的开源自然语言处理(NLP)库,它提供了一系列的工具和功能,用于文本预处理、文本解析、命名实体识别、词性标注、句法分析和文本分类等任务。 spaCy支持多种语言模型对文本进行处理,包括中文…

JAVA基础 - 异常处理

目录 一. 简介 二. 受检异常 三. 非受检异常 四. 自定义异常类 一. 简介 异常处理是 Java 编程中的一个重要概念,它用于处理程序运行时可能出现的不正常情况。 在 Java 中,异常可以分为两类:受检异常(Checked Exception&…

一篇长文搭建AI大模型应用平台架构

在研究了6家知名公司如何部署生成式AI应用程序后,注意到它们的平台有很多相似之处。概述了生成式AI大模型应用平台的常见组件、它们的作用以及它们的实现方式。尽力保持架构的通用性,但某些应用程序可能会有所不同。 Generative AI大模型应用平台整体架…

【Vulnhub系列】Vulnhub_pipe 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub-pipe 靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境配置 1、解决IP扫描不到问题 2、打开虚拟机,并修改网络连接模式为【NAT】即可 二、信息收集 1…

树状机器学习模型综述(含python代码)

树状机器学习模型综述 树状模型是机器学习中一种非常重要的算法类别,因其直观的结构和良好的可解释性而广泛应用于分类和回归任务。本文将综述几种常见的树状模型,包括决策树、随机森林、LightGBM、XGBoost和CatBoost,讨论它们的原理、用途以…

自适应降噪与沉浸音效的结合,戴上QCY MeloBuds Pro,开启静谧音乐之旅

现在蓝牙耳机的选择真是太丰富了,其中性价比高的还是国产品牌,我之前用过几款QCY的耳机,感觉不管是设计,还是音质,以及佩戴的舒适度,都要比同价位的耳机更出色一些。最近我又新入手了一款 MeloBuds Pro&…