前情提要

问:如何通过nginx的反向代理,代理多台虚拟主机(一台apache服务器上的虚拟主机)?

1.在nginx的配置文件中,将基于域名的访问改为基于端口的访问(nginx.conf)

upstream daili{server www1.xxhf.com;    #默认80端口server www2.xxhf.com:90;    #改为90端口server 192.168.77.79;}server {location / {proxy_pass http://daili;}}

2.在nginx服务器的hosts文件中配置域名解析(/etc/hosts)

192.168.77.78 www1.xxhf.com
192.168.77.78 www2.xxhf.com

3.修改apache主配置文件,监听90端口

Listen 80
Listen 90

4.如果用rpm包安装apache服务,则没有子配置文件,需要到/usr/share/doc/httpd-core/httpd-vhost.conf中复制模版到/etc/httpd/conf.d目录下

总结:反向代理的upstream可通过dns解析域名获得ip,但因为解析时机要比调用时机更早,因为真正调用时只能获取到相同的apache服务器ip,按顺序找到第一台虚拟主机。

一、静态和动态资源

静态资源   .html  .htm

  • 使用静态网页开发技术发布的资源
  • 如:文本、音视频、HTML、CSS、JS等
  • 标记语言、直接映射

动态资源  .php .java

  • 使用动态网页开发技术发布的资源
  • 如:jsp/servlet、php等
  • 编程语言、有逻辑

1.服务器处理html文件

  • web服务器去网页根目录找到index.html文件,随后将内容返回给浏览器去解析

2.服务器处理php文件

  • web服务器将动态的php页面转成静态,即输出代码运行结果,将结果返回给浏览器

3.LAMP关系

  • LAMP:Linux + Apache + MySQL + PHP
  • Linux:系统,提供环境支持
  • Apache:网站服务,部署网站、处理网页请求 
  • MySQL:数据库,网站数据的持久化存储
  • PHP:编程语言,网站动态资源的解析

4.A与P的关联方法

  • mod_php:修改apache配置文件,使其识别*.php文件,进而加载php模块解析动态页面
  • php_fpm:启动php-fpm进程,交给代理fastcgi,将http服务器和脚本解析器分离;当http服务器每次遇到动态请求时,直接交付给fastcgi进程去执行,然后把结果返回给浏览器

注:apache和php使用rpm包安装,会自动配置关联——php_fpm进程

二、Apache+PHP组合

服务器:77.79

1.rpm包安装httpd和php

[root@localhost ~]# dnf -y install httpd
[root@localhost ~]# dnf -y install php

2.自动配置关联

3.直接部署页面,浏览器访问

[root@localhost ~]# vi /var/www/html/test.php
<?phpecho "hello world";
?>

三、Nginx+PHP组合

服务器:77.77

1.rpm包安装nginx和php

[root@localhost ~]# dnf -y install php nginx

2.修改php配置文件参数

注:nginx无法处理php脚本,需要安装php解释器调用脚本,但直接安装的php解释器默认用户是apache服务,需要改成nginx

[root@localhost ~]# vi /etc/php-fpm.d/www.confuser = nginx
group = nginx

3.启动php-fpm进程,重载服务

systemctl start php-fpm
vi /usr/share/nginx/html/test.php
<?phpecho "hello world";
?>
/sbin/nginx -s reload

4.采用其他方式载入动态资源

注:关闭77.77的php进程,通过反向代理,将动态请求移交给后端已经配置好php解释器的apache(77.79)服务器去处理

(1)修改nginx.conf配置文件,同时修改apache服务页面,以免混淆

[root@localhost ~]# systemctl stop php-fpm    #关闭php进程
[root@localhost ~]# vi /etc/nginx/nginx.conflocation ~ \.php {proxy_pass 192.168.77.79;    #将php文件请求移交给apache服务}

注:虽然关闭了php进程,但依旧有两个文件影响了反向代理的跳转,需要手动删掉

rm -rf /etc/nginx/conf.d/php.conf
rm -rf /etc/nginx/default.d/php.conf

(2)重启nginx,测试

 ​​​​​​​​​​​​​​​​​​​四、PHP调用MySql

注:php调用mysql的中间工具——php-mysqli、php-pdo

1.安装mariadb数据库

[root@localhost ~]# dnf -y install mariadb mariadb-server php-mysqli php-pdo

2.启动数据库,端口号3306

#开启服务
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# ss -anpt | grep :3306
LISTEN 0      80                 *:3306            *:*    users:(("mariadbd",pid=3089,fd=17))                                                                    #执行mysql
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.#创建用户
MariaDB [(none)]> create user lisi @'%'identified by'123';
Query OK, 0 rows affected (0.002 sec)
#授权
MariaDB [(none)]> grant all on *.* to lisi@'%';
Query OK, 0 rows affected (0.001 sec)
#退出
MariaDB [(none)]> exit
Bye
#客户端连接mysql服务器
[root@localhost ~]# mysql -h192.168.77.79 -p3306 -ulisi -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#创建一个库
MariaDB [(none)]> create database db1;
Query OK, 1 row affected (0.001 sec)
#查看mysql有哪些数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

3.部署wordpress项目

注:LAMP环境已经搭建好,wordpress项目也是通过php编写的项目,可以直接导入web服务网页根目录(77.79),添加权限后启动

[root@localhost html]# pwd
/var/www/html
[root@localhost html]# ll
total 12
-rw-r--r-- 1 root   root     20 Sep 15 16:30 index.html
-rw-r--r-- 1 root   root     60 Sep 15 21:50 test.php
drwxr-xr-x 5 apache apache 4096 Sep 16 09:08 wordpress
[root@localhost html]# 

也可以使用nginx(77.77)反向代理去访问apache服务器(77.79)的wordpress项目,只需在nginx.conf配置文件中设置即可

        location /wordpress {proxy_pass http://192.168.77.79;}

五、Tomcat+java组合

服务器:77.77(恢复快照后的纯净版)

补充知识:

  • tomcat是web应用服务器,可以处理http请求和只处理动态java代码

注:因为tomcat是有java代码编写,因此安装tomcat前需要先安装java环境

1.源码包安装

在网页端下载jdk——java开发工具包,将其导入linux并解压

[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mariadb-10.6.17.tar.gz  mypress.war  mysql-connector-java-5.1.24.jar
[root@localhost ltmj-r9]# tar -zxf jdk-11.0.11_linux-x64_bin.tar.gz 
[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mypress.war
jdk-11.0.11                  mariadb-10.6.17.tar.gz            mysql-connector-java-5.1.24.jar
[root@localhost ltmj-r9]# cp -a jdk-11.0.11 /usr/local/jdk11
#安装jdk指定版本、覆盖系统默认安装的

2.配置环境变量

注:默认安装的jdk在/usr/bin下

vi /etc/profile
export JAVA_HOME=/usr/local/jdk11
PATH=$PATH:$JAVA_HOME/bin
#这里之所以分出JAVA_HOME是因为有的java项目会去找这个变量
[root@localhost ltmj-r9]# source /etc/profile    #让配置文件生效

3.测试环境,查看版本

#配置好环境变量之后,才能使用java命令
[root@localhost ~]# java -version
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
#说明jkd环境已经安装完毕

4.创建java文件,测试效果

vim HelloWorld.javapublic class HelloWorld{
public static void main(String[] args) {
System.out.println("hello world~");
}
}

效果

#编译,生成.class文件
[root@localhost ~]# javac HelloWorld.java 
[root@localhost ~]# ls
anaconda-ks.cfg  cat.sh  HelloWorld.class  HelloWorld.java  ltmj-r9  ltmj-r9.tar.gz
#执行
[root@localhost ~]# java HelloWorld
hello world~

5.源码包安装Tomcat

[root@localhost ltmj-r9]# tar -zxf apache-tomcat-9.0.48.tar.gz 
[root@localhost ltmj-r9]# ls
apache-tomcat-9.0.48         jdk-11.0.11                       mariadb-10.6.17.tar.gz  mysql-connector-java-5.1.24.jar
apache-tomcat-9.0.48.tar.gz  jdk-11.0.11_linux-x64_bin.tar.gz  mypress.war
[root@localhost ltmj-r9]# cp -a apache-tomcat-9.0.48 /usr/local/tomcat9

启动服务

/usr/local/tomcat9/bin/catalina.sh start
/usr/local/tomcat9/bin/catalina.sh stop
或:
/usr/local/tomcat9/bin/startup.sh
/usr/local/tomcat9/bin/shutdown.sh

6.测试Tomcat服务器

基本参数

  • 默认端口:8080
  • 配置文件:安装目录/conf/server.xml
  • 网页根目录:安装目录/webapps
  • 默认网页文件:安装目录/webapps/ROOT/index.jsp
  • 日志文件:安装目录/logs
[root@localhost ~]# /usr/local/tomcat9/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/local/jdk11
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost ~]# ss -anpt | grep :8080
LISTEN 0      100                     *:8080            *:*    users:(("java",pid=1844,fd=43))     

访问页面:

http://ServerIP:8080

六、Tomcat部署项目(LTMJ)

rpm包安装(77.78)——纯净版

1.安装tomcat和数据库mariadb

[root@localhost ~]# dnf -y install tomcat mariadb mariadb-server[root@localhost ~]# systemctl start tomcat
[root@localhost ~]# ss -anpt | grep :8080
LISTEN 0      100                     *:8080            *:*     users:(("java",pid=14256,fd=46)) 

补充知识:

  • rpm包参数
  • 端口:8080
  • 配置文件:/usr/share/tomcat/conf/server.xml
  • 日志:/usr/share/tomcat/logs
  • 网页根目录:/usr/share/tomcat/webapps
  • 依赖库:/usr/share/tomcat/lib
  • 默认网页文件/usr/share/tomcat/webapps/ROOT/index.jsp

2.启动数据库,创建用户

[root@localhost conf]# systemctl start mariadb
[root@localhost conf]# mysqlWelcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.22-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>  create user lisi @'%'identified by'123';
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> grant all on *.* to lisi@'%';
Query OK, 0 rows affected (0.002 sec)MariaDB [(none)]> create database xiangmu;
Query OK, 1 row affected (0.001 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| xiangmu            |
+--------------------+
4 rows in set (0.001 sec)

3.创建默认网页文件

注:当前网页根目录下没有页面,需要手动创建ROOT目录和index.jsp网页文件

[root@localhost webapps]# mkdir ROOT
[root@localhost webapps]# echo "hello world" >> ROOT/index.jsp

4.部署一个mypress项目

注:该mypress项目已经做好,只需要下载包到webapps目录下即可自动解包和部署

[root@localhost webapps]# ls
mypress  mypress.war  ROOT

直接访问页面:192.168.77.78:8080/mypress

但是输入数据后登录却发现请求失败,是因为缺少了一个依赖,导致java无法连接数据库

下载依赖到lib库当中,这里我将包放在了77.77服务器上,可以直接拿过来

[root@localhost webapps]# cd ..
[root@localhost tomcat]# cd lib/
[root@localhost lib]# scp 192.168.77.77:/root/ltmj-r9/mysql-connector-java-5.1.24.jar .

再次重启tomcat,点击提交,就可以正常跳转登录界面

5.通过nginx代理访问服务

(1)使用rmp包安装nginx(77.79)

[root@localhost ~]# dnf -y install nginx

(2)修改配置文件,添加代理

        location /mypress {proxy_pass http://192.168.77.78:8080;} 

(3)重启服务,通过网页登录测试:192.168.77.79/mypress

七、相关配置修改

1.Tomcat源码包修改端口

(1)直接修改server.xml配置文件

    <Connector port="80" protocol="HTTP/1.1"

(2)重启tomcat服务,测试

[root@localhost tomcat9]# ./bin/catalina.sh stop
[root@localhost tomcat9]# ./bin/catalina.sh start

2.Tomcat-RPM包修改端口

注:rpm修改端口时,无法将端口修改至1024以下,因为启动进程的用户是普通用户tomcat,需要修改成root用户才可以正常修改至80端口

(1)查看当前进程,发先用户是tomcat

(2)修改配置文件,重启进程,再查看进程

#注释掉服务中的tomcat用户
[root@localhost ~]# vi /usr/lib/systemd/system/tomcat.service 
#User=tomcat[root@localhost ~]# systemctl restart tomcat

(3)修改端口号为80,重启服务测试(这里的页面是我自己添加的默认网页文件)

[root@localhost tomcat]# vi conf/server.xml 

3.使用域名访问Tomcat

(1)修改配置文件server.conf

      <Host name="tomcat.xxhf.com"  appBase="webapps"unpackWARs="true" autoDeploy="true">

(2)添加到主机的hosts文件当中

(3)浏览器访问

但很快就发现,使用ip无法正常访问

(4)再次修改配置文件

<Engine name="Catalina" defaultHost="tomcat.xxhf.com">

(5)浏览器测试

注:这次域名和ip都可以正常访问

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

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

相关文章

晨曦中,它已劳作:一台有温度的机器人如何重塑我们的洁净日常

清晨六点&#xff0c;城市的轮廓在微光中逐渐清晰。某高端小区的路面上&#xff0c;一台灰色机身、线条流畅的机器正在安静地工作。它绕过停靠的车辆&#xff0c;精准地沿着路缘石前进&#xff0c;吸走落叶与尘土&#xff0c;遇到突然窜出的流浪猫时轻巧避让&#xff0c;仿佛有…

【最新高级版】酷柚易汛生产管理系统v1.2.8 +uniapp全开源+文档教程

酷柚易汛生产管理系统是基于FastAdminThinkPHPLayuiuniapp开发的生产管理系统&#xff0c;帮助企业数字化转型&#xff0c;打造智能工厂&#xff0c;专业为生产企业量身开发的一套完整的生产管理系统。主要包含以下模块&#xff1a;购货模块、生产模块、仓库模块、资料模块&…

40分钟的Docker实战攻略

一&#xff1a;什么是Docker &#xff08;1&#xff09;基本概念 Docker 是一种开源的 容器化平台&#xff0c;用于快速构建、部署和运行应用程序。它通过将应用程序及其依赖项打包到轻量级的、可移植的容器中&#xff0c;实现了环境一致性&#xff0c;解决了“在我机器上能运…

qt使用camke时,采用vcpkg工具链设置OSG的qt模块osgQOpenGLWidget

【免费】osgQOpenGLWidget嵌入qt模块,VS2022使用cmake的方式,工具链vcpkg资源-CSDN下载 CMake中设置 1.查找osg相关的库,同时也会设置对应include的路径 # 检查是否找到 osg find_package(OpenSceneGraph 3.6.5REQUIRED COMPONENTS osgosgUtilosgGAosgViewerosgDBosgAnimatio…

洛谷 P2245 星际导航(kruskal 重构树 + 倍增优化求路径最大边权)

题目链接 题目难度 洛谷上是蓝题&#xff0c;我觉得这道题挺简单的&#xff0c;一眼就看穿了&#xff0c;应该是绿题。 题目解法概括 kruskal 重构树 倍增优化求路径最大边权。 代码 #include <iostream> #include <vector> #include <algorithm> #in…

STM32H743-ARM例程1-IDE环境搭建与调试下载

目录实验平台环境搭建一、Keil MDK集成开发环境1.MDK简介2.MDK5安装3.程序下载与调试二、STM32CubeMX1.STM32CubeMX简介2.JAVA JRE安装3.STM32CubeMX安装4.STM32CubeH7库安装实验平台 硬件&#xff1a;银杏科技GT7000双核心开发板-ARM-STM32H743XIH6&#xff0c;银杏科技iTool…

FPGA学习篇——Verilog学习MUX的实现

PS&#xff1a;目前手上仍然没有板子&#xff0c;按照野火视频的讲解&#xff0c;目前我们只能做到前面六步&#xff08;其实第一步设计规划也是需要看板子的硬件的&#xff0c;但是现在没有板子就完全与野火传授的板子一致来看&#xff09; 首先我们以最简单的2路选择器MUX2_1…

OpenStack 学习笔记

OpenStack 1. 什么是 OpenStack 1.1 OpenStack 发展史 2006 年亚马逊推出 AWS&#xff0c;正式开启云计算的新纪元 2010 年 7 月美国国家航空航天局&#xff08;NASA&#xff09;与 Rackspace 合作&#xff0c;共同宣布 OpenStack 开放源码计划&#xff0c;由此开启了属于 Open…

mysql小数取整

1 向下取整 SELECT FLOOR(123.456); -- 结果: 1232 向上取整 SELECT CEIL(123.001); -- 结果: 1243 四舍五入 SELECT ROUND(123.456); -- 结果: 123 SELECT ROUND(123.556); -- 结果: 1244 截断&#xff08;不四舍五入&#xff0c;直接截断小数位&#xff09; SELECT …

Day43 PHP(mysql不同注入类型、mysql不同注入点、mysql传输不同数据类型 )

一、不同注入类型实际&#xff1a;我们未知sql是哪种类型&#xff0c;只能靠试/使用sql工具原理&#xff1a;闭合程序员写的sql语句&#xff0c;并且执行我们所需要的sql语句&#xff0c;最后将闭合后多余的 用-- 或者#注释掉。 总结一下就是先闭合&#xff0c;后注释。共四种…

Linux应用开发(君正T23):三网智能切换及配网功能

前段时间接手了一个监控项目&#xff0c;其中甲方对于设备的要求有一条就是实现网口eth、WiFi、4G三种手段的联网方式并且当某一个网络不好的时候就去切换到下一个能用的网络&#xff0c;让监控设备持续不断的有网络&#xff0c;保证监控数据的上传。这个部分的功能就交由我来实…

IvorySQL 4.6:DocumentDB+FerretDB 实现 MongoDB 兼容部署指南

背景 MongoDB 诞生之初&#xff0c;便以出色的易用性与详尽的驱动程序文档脱颖而出&#xff0c;堪称对传统关系型数据库的一次重要革新&#xff0c;也正因如此&#xff0c;它迅速成为开发者社区的热门之选。 然而&#xff0c;随着其许可模式从开源转向 SSPL 许可证&#xff0…

论文阅读:arixv 2025 One Token to Fool LLM-as-a-Judge

总目录 大模型相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2507.08794 https://www.doubao.com/chat/20698287584991234 速览 这篇文档主要讲了一个关于“大语言模型当裁判”的重要发现——很多我们以为靠谱的AI裁…

webrtc弱网-AlrDetector类源码分析与算法原理

AlrDetector&#xff08;应用受限区域检测器&#xff09;是WebRTC中用于检测发送端是否处于应用层限速状态的核心组件。它通过维护一个基于时间间隔的预算系统&#xff0c;监控实际发送数据量与网络容量之间的关系。当发送速率持续低于网络容量的设定比例&#xff08;如65%&…

ABP + Verify(快照) 驱动的 PDF/Excel 导出回归

ABP + Verify(快照) 驱动的 PDF/Excel 导出回归 🚀 📚 目录 ABP + Verify(快照) 驱动的 PDF/Excel 导出回归 🚀 0) TL;DR ✨ 1) 背景与目标 🎯 2) 架构与职责(解耦渲染器) 🧩 3) “确定性”前置条件(去伪差异) 🔒 4) PDF 回归策略(以 QuestPDF 为例) 📄 4.…

SIFT特征匹配实战:KNN算法实现指纹认证

这个利用了前面学到的SIFT特征检测来实现的&#xff0c;然后这里主要就是引入了一个新的匹配器。这里匹配是用KNN算法进行匹配的。下面来看下细节。介绍函数由于要频繁展示&#xff0c;所以这里定义了一个函数。def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)导入…

网络安全渗透测试第一步信息收集

信息收集是渗透测试中最基础且关键的一步&#xff0c;它直接影响后续漏洞发现和利用的成功率。本文将系统介绍信息收集的常用方法、工具和技巧&#xff0c;帮助你在实战中高效定位目标弱点。 一、搜索引擎利用 1. Google Hacking 通过Google搜索语法快速定位敏感信息、后台地…

C++——类和对象1

1.类的定义1.1 类定义格式class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{ }中的内容是类的主题为了&#xff0c;注意类定义结束时后面的分号不能省略。类体中的内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量&#xff1b;类中的函数称为类的方…

动手学Agent:Agent设计模式——构建有效Agent的7种模型

Agent本身的定义也不是绝对的&#xff0c;从LLM到最高等级的Agent&#xff0c;中间是有大量灰度地带的&#xff0c;在Anthropic看来&#xff0c;Agent可以以多种方式定义&#xff0c;有些人将完全自主系统定义为Agent&#xff0c;而另一些团队则将预定义的工作流程定义为Agent。…

Windows 下 .venv 激活脚本深度定制:同时注入 PyTorch 调试日志与国内网络加速通道——从“能跑”到“好调”的完整工程化方案

Windows 下 .venv 激活脚本深度定制&#xff1a;同时注入 PyTorch 调试日志与国内网络加速通道 ——从“能跑”到“好调”的完整工程化方案 一、为什么非得改激活脚本&#xff1f; 重复劳动最耗时 每次打开终端都要敲四五行 set/export&#xff0c;人脑就是不可靠的剪贴板。 环…