nginx续1:

news2024/11/25 16:40:21

八、虚拟主机配置

基于域名的虚拟主机
[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://www.coloradmin.cn/o/1962656.html

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

相关文章

基于Material studio拉伸-断裂过程的Perl脚本

在材料科学的研究中,拉伸-断裂过程一直是科学家们探索的焦点。这一过程涉及复杂的力学行为和材料内部微观结构的变化,对于理解材料的性能至关重要。然而,传统的实验方法不仅耗时耗力,而且难以捕捉到微观尺度上的所有细节。 为了满…

jQuery前端网页制作

1、Jquery的概述 1.1JavaScript库 JavaScript 高级程序设计(特别是对浏览器差异的复杂处理),通常很困难也很耗时。 为了应对这些调整,许多的 JavaScript (helper) 库应运而生。 这些 JavaScript 库常被称为 JavaScript 框架。 市面上一些广受欢迎的 JavaScript 框架:…

visual studio性能探测器使用案列

visual studio性能探测器使用案列 在visual studio中,我们可以使用自带的工具对项目进行性能探测,具体如下 1.选择性能探查器 Vs2022/Vs2019中打开方式: Vs2017打开方式: 注意最好将解决方案配置为:Release Debu…

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度,尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图,然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板,勾上真省钱,然后保…

Meta再下一城:SAM 2

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- “继用于图像的Meta Segment Anything Model &#xff08;SAM&#xff09;取得成功之后&#xff0c;我们发布了SAM 2&#xff0c;这是一种用于在图像和视频中实时进行对象分割的统一模型&#…

npm创建vue的ts项目

一、进入项目文件夹 使用cmd进入你想要创建项目的文件夹&#xff0c;此处为 E盘的test文件夹 cd E:\testE:二、创建项目 此处项目名为 MyTestProject npm create vitelatest输入上述代码&#xff0c;回车后会出现灰色的虚拟名称&#xff0c;此处输入你自己的名称即可&#…

软件平台化开发项目实践

汉捷咨询有40多位来自多家著名企业&#xff08;华为、中兴、三星等&#xff09;的咨询顾问和讲师&#xff0c;资深顾问/项目经理均有华为、中兴等领先企业高管及咨询实践15年以上经验&#xff0c;本文为汉捷一IPD资深顾问的行业实践总结&#xff0c;与各位同仁分享&#xff01;…

WPF用户登录界面设计-使用SQLite数据库进行存储

一、SQLite数据库介绍 SQLite是一款轻量级的关系型数据库&#xff0c;它小巧高效&#xff0c;无需服务器配置&#xff0c;仅需单一文件即可存储数据。SQLite跨平台支持&#xff0c;易于集成到各种应用程序中&#xff0c;并支持SQL语言进行数据操作。它保证了数据的完整性、一致…

Java数据结构和算法中文版(第2版)详细教程

前言 数据结构是指数据在计算机存储空间中(或磁盘中)的安排方式。算法是指软件程序用来操作这些结构中的数据的过程。几乎所有的计算机程序都使用数据结构和算法&#xff0c;即使最简单的程序也不例外。比如设想一个打印地址标签的程序&#xff0c;这个程序使用一个数组来存储…

整理几个常用的Linux命令(Centos发行版)

如果工作中需要经常整理一些文档&#xff0c;需要汇总一下&#xff0c;现有的服务器资源信息&#xff0c;那么这篇文章适合你&#xff1b; 如果你是一名开发者&#xff0c;需要经常登录服务器&#xff0c;排查应用的出现的一些问题&#xff0c;那么这篇文章适合你&#xff1b;…

使用java判断字符串中是否包含中文汉字

1.导入huool工具的maven依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.复制一下代码直接运行 import cn.hutool.core.lang.Validator;public …

面向对象 - 概述、类的创建、 实例化与内存解析

一、学习面向对象的三条主线 Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类面向对象的特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;其他关键字的使用&#xff1a;…

机械学习—零基础学习日志(高数16——函数极限性质)

零基础为了学人工智能&#xff0c;真的开始复习高数 这里我们继续学习函数极限的性质。 局部有界性 充分条件与必要条件 极限存在是函数局部有界的充分条件。什么是充分条件&#xff0c;什么是必要条件呢&#xff1f;我这里做了一点小思考&#xff0c;和大家分享&#xff0c…

alibaba cloud linux+JDK+TOMCAT+NGINX+PHP+MYSQL配置实践

CentOs要停止维护了&#xff0c;一直在服务器上用的CentOs7也最迟到2024年6月了&#xff0c;这次给公司新购一台备用服务器&#xff0c;在选择操作系统的时候&#xff0c;考虑了一下&#xff0c;决定试用一下阿里云的alibaba cloud linux。 alibaba cloud linux分为2和3版本&am…

创客项目秀 | 基于xiao的光剑

在《星球大战》宇宙中&#xff0c;光剑不仅仅是武器;它们是持有者与原力的桥梁&#xff0c;制造一把光剑几乎是每个创客的梦想&#xff0c;今天给大家带来的是国外大学生团队制作的可伸缩光剑项目。 材料清单&#xff1a; 电机驱动模块1:90减速电机套装MP3模块、喇叭Xiao RP2…

ingress使用HostNetwork部署

1.三种常用的部署模式 1.1 DeploymentLoadBalancer模式的service 用Deployment部署igress-controller&#xff0c;创建一个type为LoadBalancer的service关联这组pod。大部分公有云&#xff0c;都会为LoadBalancer的service自动创建一个负载均衡器&#xff0c;通常还绑定了公网…

Java面试八股之Spring如何解决循环依赖

Spring如何解决循环依赖 在Spring框架中&#xff0c;循环依赖问题通常发生在两个或多个Bean相互依赖的情况下。Spring为了解决循环依赖问题&#xff0c;采用了不同的策略&#xff0c;这些策略主要取决于Bean的作用域以及依赖注入的方式。下面是一些关键点&#xff1a; 单例Be…

护眼灯真的有用吗?护眼灯到底该不该买?

护眼灯真的有用吗&#xff1f;随着科技的发展&#xff0c;生活质量水平的不断提升&#xff0c;大家对于生活的要求也在不断拔高。护眼台灯进入众多家庭里面&#xff0c;成为不可或缺的产品。然而&#xff0c;护眼台灯在市面上&#xff0c;种类颇多&#xff0c;其质量也是参差不…

力扣高频SQL 50题(基础版)第三十三题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十三题610.判断三角形题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十三题 610.判断三角形 题目说明 表: Triangle ----------------- | Column Name | Typ…

Python入门宝藏《看漫画学Python》,495页漫画带你弄清python知识点!简单易懂 | 附PDF全彩版

华为出品的《看漫画学Python》全彩PDF教程是一本适合Python初学者的学习资料&#xff0c;通过漫画的形式将复杂的Python技术问题简单化&#xff0c;使学习过程更加生动有趣。以下是对该教程的内容简介、本书概要及本书目录的详细解析&#xff1a; 内容简介 《看漫画学Python》…