详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)

news2024/11/18 1:24:32

实战项目演练

  • 1.问题描述
  • 2.实验操作步骤
    • 2.1 CentOS 7-1客户端配置
    • 2.2 CentOS 7-2网关服务器配置
    • 2.3 CentOS 7-8 (Web1:Tomcat服务器)
      • 2.3.1 安装Tomcat服务器
      • 2.3.2 提供四层反向代理的动态页面
    • 2.4 CentOS 7-9 (Nginx服务器)
      • 2.4.1 安装Nginx服务
      • 2.4.2 安装MySQL服务
      • 2.4.3 安装配置PHP中间件
      • 2.4.4 部署Discuz社区论坛Web应用
      • 2.4.5 配置Nginx虚拟主机
      • 2.4.6 对虚拟主机域名www.benet.com的nginx服务调优
      • 2.4.7 基于域名的跳转
      • 2.4.8 基于www.benet.com域名的动静分离(四层反向代理)
    • 2.5 CentOS 7-10 (Web2:Tomcat服务器)

1.问题描述

服务器IP地址规划:client:12.0.0.12/24,网关服务器:ens35:12.0.0.1/24、ens33:192.168.80.1/24,Web1:192.168.80.80/24,Web2:192.168.80.100/24,Nginx:192.168.80.90/24。

(1)在Nginx服务器上搭建LNMP服务,并且能够对外提供Discuz论坛服务。
在Web1、Web2服务器上搭建Tomcat 服务。

(2)为nginx服务配置虚拟主机,新增两个域名www.kgc.com 和 www.benet.com,使用http://www.kgc.com/bbs/index.php可访问上一题的Discuz论坛页面。
使用http://www.benet.com则访问/var/www/html目录中的index.html文件的内容,内容自定义。

(3)对基于www.benet.com域名的虚拟机主机的nginx服务调优:隐藏nginx版本号,缓存静态图片网页时间为1天,设置网页压缩与防盗链功能。

(4)网关服务器搭建NFS服务,提供的文件系统使用LVM类型,共享目录名称为/opt/nfs;要求根据日期对Discuz论坛服务的访问日志进行日志分割,要求每天生成一份日志文件,保存到NFS服务共享的目录内容。

(5)要求配置location匹配请求地址http://www.kgc.com/test/XXXX,使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容。
要求使用rewrite将使用域名www.benet.com 请求以 .php 结尾的访问都跳转到域名www.kgc.com上,而且后面的参数保持不变,比如访问http://www.benet.com/bbs/index.php跳转到http://www.kgc.com/bbs/index.php。

(6)在Nginx服务器上对基于www.benet.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat 服务器处理,并实现负载均衡.

(7)在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问也可实现上一题的效果。

2.实验操作步骤

在这里插入图片描述

2.1 CentOS 7-1客户端配置

在这里插入图片描述

2.2 CentOS 7-2网关服务器配置

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)设置网关服务器的网卡地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.80.20
NETMASK=255.255.255.0

cp -a /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens35
#UUID=7acafc56-e5b0-4abd-9a96-27db5a96e4b9
DEVICE=ens35
IPADDR=12.0.0.20
NETMASK=255.255.255.0

systemctl restart network
ifconfig

(2)搭建NFS服务

yum install nfs-utils rpcbind -y

###创建共享目录
mkdir /opt/nfs
chmod 777 /opt/nfs

vim /etc/exports
/opt/nfs 192.168.80.0/24(rw,sync)

systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

showmount -e

在这里插入图片描述

(3) 设置SNAT/DNAT策略

在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问也可实现上一题的效果。

iptables -F
iptables -F -t nat
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.90
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens35 -j SNAT --to 12.0.0.1

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

浏览器访问测试

http://12.0.0.1

在这里插入图片描述

在这里插入图片描述

2.3 CentOS 7-8 (Web1:Tomcat服务器)

2.3.1 安装Tomcat服务器

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)安装JDK

cd /opt
mkdir tomcat
cd /opt/tomcat
rz -E
tar xf apache-tomcat-9.0.16.tar.gz
rpm -qpl jdk-8u201-linux-x64.rpm 
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version
mv apache-tomcat-9.0.16 /usr/local/tomcat

(2)设置JDK环境变量

vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile.d/java.sh
java -version

(3)将tomcat服务加入到systemd系统文件中,启动tomcat.service服务并设置为开机自启

vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_201-amd64"
Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target

(4)启动tomcat服务

systemctl daemon-reload
systemctl start tomcat 
systemctl enable tomcat
netstat -lntp | grep 8080 

在这里插入图片描述
(5)浏览器访问

http://192.168.80.80:8080

在这里插入图片描述

2.3.2 提供四层反向代理的动态页面

在Nginx服务器上对基于www.benet.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat服务器处理,并实现负载均衡。
在Tomcat服务器中添加Nginx服务器的域名解析

echo "192.168.80.90 www.benet.com" >> /etc/hosts

在Tomcat服务器的根目录/usr/local/tomcat/webapps中添加.jsp文件的动态页面

mkdir -p /usr/local/tomcat/webapps/test
cd /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page!</title>
</head>
<body>
<% out.println("IP:192.168.80.80:80-----动态页面http://www.test1.com");%>
</body>
</html>

修改tomcat服务的主配置文件

cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.bak

vim /usr/local/tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1"    #修改tomcat服务器的连接端口为80
----------删除148行和149行,然后添加如下内容-----------
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true">
	</Context>

systemctl restart tomcat
netstat -lntp | grep java

在这里插入图片描述

浏览器访问测试

http://192.168.80.80:80

CentOS 7-8 Web1访问页面测试结果;

http://192.168.80.80:80

在这里插入图片描述

CentOS 7-10 Web1访问页面测试结果;

http://192.168.80.100:80

在这里插入图片描述

2.4 CentOS 7-9 (Nginx服务器)

2.4.1 安装Nginx服务

###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled

(1)安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

(2)创建运行用户

useradd -M -s /sbin/nologin nginx

(3)编译安装

cd /opt
rz -E
tar xf nginx-1.24.0.tar.gz 
cd nginx-1.24.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make -j4 && make install

(4)优化路径

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

(5)添加Nginx系统服务

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

(6)将nginx服务加入到systemd系统文件中,启动nginx服务并设置为开机自启

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
netstat -lntp | grep nginx

2.4.2 安装MySQL服务

(1)安装Mysql环境依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

(2)编译安装

cd /opt
mkdir mysql
cd /opt/mysql
rz -E
tar xf boost_1_59_0.tar.gz 
tar xf mysql-5.7.17.tar.gz 
mv boost_1_59_0 /usr/local/boost
cd mysql-5.7.17/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

make -j4 && make install

(3)修改mysql配置文件

vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

(4)创建运行用户

useradd -M -s /sbin/nologin  mysql

(5)更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

(6)设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile

(7)初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

在这里插入图片描述

(8)添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306 

(9)修改mysql的登录密码

mysqladmin -u root password "123"

(10)授权远程登录

mysql -u root -p123
grant all privileges on *.* to 'root'@'%' identified by '123';
flush privileges;

在这里插入图片描述

2.4.3 安装配置PHP中间件

(1)安装环境依赖包

yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

(2)编译安装

cd /opt
mkdir php
cd /opt/php
rz -E
tar -xf php-7.1.10.tar.bz2 
cd php-7.1.10/
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make -j4 && make install

(3)路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

(4)创建运行用户

useradd -M -s /sbin/nologin  php

(5)调整PHP配置文件

###调整主配置文件:
cp /opt/php/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	
vim /usr/local/php/lib/php.ini
---1170行---修改---
mysqli.default_socket = /usr/local/mysql/mysql.sock
---939行---取消注释,修改---
date.timezone = Asia/Shanghai

php -m 					#验证安装的模块

###调整进程服务配置文件:
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
---17行---去掉";"注释---
pid = run/php-fpm.pid

###调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
vim www.conf
user = php     #--23行修改为系统中已存在的用户名
group = php    #--24行修改为系统中已存在的用户名
listen = 192.168.80.90:9000     #--36行此处修改为php服务器的IP地址(监听php服务器的IP地址)
listen.allowed_clients = 192.168.80.90   #--62行此处修改为nginx服务器的IP地址(接收转发请求的客户端地址)

(6)启动php-fpm

cd /opt/php/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl daemon-reload 
systemctl start php-fpm.service
systemctl enable php-fpm.service
netstat -lntp | grep 9000

在这里插入图片描述

(7)配置Nginx支持PHP解析

cd /usr/local/nginx/conf
mv nginx.conf nginx.conf.bak1
cp nginx.conf.default nginx.conf
vim /usr/local/nginx/conf/nginx.conf
---45行---修改---
            index  index.html index.htm index.php;  #此处需要添加index.php
---65行---修改---
       location ~ \.php$ {    #--65行到71行取消注释
           root           html;            fastcgi_pass   192.168.80.50:9000;     #此处需要修改为Nginx服务器的ip地址
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  #$document_root 代表当前请求在root指令中指定的值
           include        fastcgi_params;
    }

nginx -t
systemctl restart nginx	

(7)验证PHP测试页

cd  /usr/local/nginx/html
vim index.php
<?php
phpinfo();
?>

mv index.html index.html.bak

浏览器访问

http://192.168.80.90/index.php
http://192.168.80.90     #访问这两个地址效果一样

在这里插入图片描述

(8)验证数据库工作是否正常

mysql -uroot -p123
create database bbs;   #创建数据库bbs
show databases;
grant all on bbs.* to 'bbsadmin'@'%' identified by '123';  #允许用户bbsadmin从任意主机对bbs数据库的所有执行权限,并设置密码123
grant all on bbs.* to 'bbsadmin'@'localhost' identified by '123';#允许用户bbsadmin在本地对bbs数据库的所有执行权限,并设置密码123
flush privileges;    #刷新权限
quit

vim /usr/local/nginx/html/test.php      #配置连接数据库的测试页面
<?php
$link=mysqli_connect('192.168.80.90','bbsadmin','123');
if($link) echo "<h1>connect successfuly!!!</h1>";
else echo "<h1>connect failed!!!</h1>";
?>                   

浏览器访问

http://192.168.80.90/test.php

在这里插入图片描述

2.4.4 部署Discuz社区论坛Web应用

(1)复制论坛文件到nginx的网页根目录,并重命名为bbs

cd /opt
rz -E
unzip Discuz_X3.4_SC_UTF8.zip 
cd dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs

浏览器访问

http://192.168.80.90/bbs

在这里插入图片描述

(2)调整论坛目录的权限

cd /usr/local/nginx/html/bbs
chown -R php data/ config/ uc_*

(3)论坛页面访问

数据库服务器:localhost     #本地架设就用localhost,如果不是在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsadmin
数据库密码:123
管理员账号:admin
管理员密码:123

在这里插入图片描述

浏览器访问普通用户登录页面;

http://192.168.80.90/bbs/index.php

在这里插入图片描述

浏览器访问管理员登录页面;

http://192.168.80.90/bbs/admin.php

在这里插入图片描述

2.4.5 配置Nginx虚拟主机

(1)为虚拟主机提供域名解析

echo "192.168.80.90 www.kgc.com www.benet.com" >> /etc/hosts

(2)为虚拟主机准备网页文档

###www.benet.com域名的网页访问内容
echo "<h1>BENET:www.benet.com</h1>" > /var/www/html/index.html  
###将bbs论坛的网页访问内容,移动到www.kgc.com域名的网页根目录下
cd /usr/local/nginx/html

(3)修改Nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
......
#http {    ###将以下内容放到http块中
......
          server {    ###www.benet.com域名的配置内容
                  listen 80;
                  server_name www.benet.com;
                  charset utf-8;
                  access_log logs/www.benet.access.log;
                  location / {
                          root /var/www/html;   #此处定义www.benet.html网页的根目录为/var/www/html
                          index index.html index.php;
                  }
                  error_page 500 502 503 504 /50x.html;
                  location = 50x.html{
                          root html;
                  }
          }
  
      server {       ###www.kgc.com域名的配置内容
          listen       80;
          server_name  www.kgc.com;
          charset utf-8;
          access_log logs/www.kgc.access.log;
  
          location / {
              root   html;      #此处定义www.kgc.html网页的根目录为/usr/local/nginx/html
              index  index.html index.htm index.php;
          }

         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }

          location ~ \.php$ {
              root           html;
              fastcgi_pass   192.168.80.90:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
     }
 } #                                                                                

(4)重启服务,访问测试

nginx -t     
systemctl restart nginx

浏览器访问

http://www.kgc.com/bbs
http://www.benet.com

通过www.kgc.com域名访问论坛网页内容;
在这里插入图片描述
通过www.benet.com域名访问到/var/www/html目录下自定义的网页内容;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eS9GLKjL-1686398159864)(null)]

2.4.6 对虚拟主机域名www.benet.com的nginx服务调优

隐藏Nginx服务的版本号

vim /usr/local/nginx/conf/nginx.conf
---第20行处添加下面内容---
server_tokens off;

nginx -t
systemctl restart nginx

验证访问测试

curl -I http://192.168.80.90

在这里插入图片描述

缓存静态图片网页时间为1天

在www.benet.com域名的网页根目录中添加图片

cd /var/www/html
rz -E
ls
###canshu.png  index.html
<html>
<body>
<title>benet Web</title>
<h1>BENET:www.benet.com</h1>
<h1>look,my girl!!!</h1>
<img src="canshu.png" />
</body>
</html>

修改缓存关键字expires的参数

vim /usr/local/nginx/conf/nginx.conf
---------------------------------
 server {    ###在www.benet.com域名的server块中,添加以下内容
---------------------------------             
                #location / {
                #       root /var/www/html;
                #       index index.html index.php;
                #}
       
                location ~ \.(htm|html|gif|jpg|jpeg|png)$ { 		#加入新的location,以图片作为缓存对象
			       root /var/www/html;
			       expires 1d;									#指定缓存时间,1天
		}
   }

nginx -t
systemctl restart nginx

浏览器验证访问测试

http://www.benet.com

在这里插入图片描述

设置网页压缩功能

vim /usr/local/nginx/conf/nginx.conf
---在http块中加入以下内容---
http {
---------------------------
   gzip on;					
   gzip_min_length 1k;      
   gzip_buffers 4 64k;      
   gzip_http_version 1.1;   
   gzip_comp_level 6;       
   gzip_vary on;
   gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;		
#} 	

nginx -t
systemctl restart nginx		

浏览器验证访问测试

http://www.benet.com

在这里插入图片描述

设置防盗链功能

防盗链主机CentOS 7-9配置如下:

cd /var/www/html
rz -E
ls
canshu.png  error.jpg index.html
vim /usr/local/nginx/conf/nginx.conf
---在http块中加入以下内容---
http {
---------------------------
	#location ~ \.(gif|jpeg|png)$ {
    #        root /var/www/html;
    #        expires 1d;

             valid_referers none blocked *.benet.com benet.com;
             if ( $invalid_referer ) {
             rewrite ^/ http://www.benet.com/error.jpg;
         }
    #}
#}

nginx -t
systemctl restart nginx

盗链主机CentOS 7-10配置如下:
(1)创建tomcat虚拟主机的域名配置

echo "192.168.80.100  www.top100.com" >> /etc/hosts
echo "192.168.80.90  www.benet.com" >> /etc/hosts

(2)设置盗链主机的网关地址为防盗链主机的IP地址

vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.80.90

(3)修改Tomcat服务的网页数据内容

cd /usr/local/tomcat/webapps/
mkdir daolian
vim /usr/local/tomcat/webapps/daolian/index.html
<html>
<body>
<title>daolian test</title>
<h1>this is dao lian web!!!!!</h1>
<img src="http://www.benet.com/canshu.png" />   
</body>
</html>

(4)修改Tomcat主配置文件

vim /usr/local/tomcat/conf/server.xml
---165行前插入以下内容---
      <Host name="www.top100.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                <Context docBase="/usr/local/tomcat/webapps/daolian" path="" reloadable="true" />
      </Host>

systemctl restart tomcat 

(5)浏览器验证访问测试

浏览器访问盗链主机

http://www.top100.com:8080

在这里插入图片描述
浏览器访问防盗链主机

http://www.benet.com

在这里插入图片描述

2.4.7 基于域名的跳转

(1)要求配置location匹配请求地址http://www.kgc.com/test/XXXX,使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容。

在www.kgc.com域名的别名根目录/var/share/nginx/html中添加网页数据内容

mkdir -p /var/share/nginx/html
cd /var/share/nginx/html
rz -E
weihu.png
vim /var/share/nginx/html/index.html
<html>
<body>
<title>Alias kgc Web</title>
<h1>KGC:www.kgc.com,but my location:/var/share/nginx/html!!!</h1>
<h1>look,my girl!!!</h1>
<img src="weihu.png" />
</body>
</html>

修改Nginx服务的主配置文件

vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log;
 ---------在www.kgc.com域名的server块中添加以下内容------------
        location /test {
			alias /var/share/nginx/html;
		}
 --------------------------------------------       
        location / {
            root   html;
            index  index.html index.htm index.php;
        }

nginx -t
systemctl restart nginx

浏览器测试访问

http://www.kgc.com/test/index.html

在这里插入图片描述
(2)要求使用rewrite将使用域名www.benet.com 请求以 .php 结尾的访问都跳转到域名www.kgc.com上,而且后面的参数保持不变,比如访问http://www.benet.com/bbs/index.php跳转到http://www.kgc.com/bbs/index.php

修改Nginx服务的主配置文件

vim /usr/local/nginx/conf/nginx.conf
        server {
                listen 80;
                server_name www.benet.com;
                charset utf-8;
                access_log logs/www.benet.access.log;
----------在www.benet.com域名的server块中添加如下内容---------		
		location ~* .*\.php$ {
		if ($host = 'www.benet.com'){
			rewrite ^/(.*)$ http://www.kgc.com/$1 permanent;
		    }
		}
--------------------------------------------		
}

nginx -t
systemctl restart nginx

浏览器测试访问

http://www.benet.com/bbs/index.php

在这里插入图片描述

2.4.8 基于www.benet.com域名的动静分离(四层反向代理)

在Nginx服务器上对基于www.benet.com域名的虚拟机主机设置动静分离,由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat服务器处理,并实现负载均衡。

vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  0;   #关闭长连接功能

http {
---------------在http块中添加如下内容-----------	
	upstream backend {
        server 192.168.80.80:80 weight=1;
        server 192.168.80.100:80 weight=1;
    }
------------------------------------------------	
	server {
		listen 80;
		server_name www.benet.com;
		charset utf-8;
		access_log logs/benet.com-access.log; 
---------------在www.benet.com域名的server中添加如下内容-----------			
		location ~* .*\.jsp$ {
            proxy_pass http://backend;
            proxy_set_header HOST $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
------------------------------------------------		
	}	
}

nginx -t
systemctl restart nginx

浏览器测试访问

静态页面访问测试;

http://www.benet.com:80/test/index.html

在这里插入图片描述

动态页面访问测试;

http://www.benet.com:80/test/index.jsp

在这里插入图片描述

2.5 CentOS 7-10 (Web2:Tomcat服务器)

操作步骤同CentOS 7-8 (Web1:Tomcat服务器),此处略!!!

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

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

相关文章

基于Python的接口自动化-读写配置文件

目录 引言 configparser模块功能介绍 引言 在编写接口自动化测试脚本时&#xff0c;有时我们需要在代码中定义变量并给变量固定的赋值。为了统一管理和操作这些固定的变量&#xff0c;咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中&#xff0c;后续需要用到这…

如何在电脑上使用wink一键高清短视频

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2安装wink2.2.2.1在雷电模拟器中安装wink2.2.2.…

LeetCode 双周赛 106(2023/06/10)两道思维题

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 加入知识星球提问。 往期回顾&#xff1a;LeetCode 单周赛第 348 场 数位 DP 模版学会了吗&#xff1f; 双周赛 106 概览 T1. 判断一个数是否迷人&#xff08;Easy&#xff09; 标…

如何做企业发布会直播/企业发布会直播流程

1 .企业发布会直播流程图 2 .发布会解决方案 A .发布会直播前 B .发布会直播中 C .发布会直播后 如何做一场企业新品、产品发布会直播&#xff1f;流程图&#xff1a; 01 发布会直播前 专业全案策划 全面深入挖掘客户直播需求&#xff0c;拆解需求&#xff0c;制定全流程落地方…

Selenium 必了解—如何测试REST API

目录 前言&#xff1a; Web UI测试存在的问题&#xff1a; REST API测试&#xff1a; 依赖包 程序示例&#xff1a; 1-获取联系人 2-GET Request&#xff1a; 3-POST Request: 4- 编辑请求 5- 删除请求 前言&#xff1a; Selenium WebDriver 可以用于测试 Web 应用的…

深度学习框架(Pytorch)学习第1步:包管理系统Anaconda的安装

PyTorch是一种开源的深度学习框架&#xff0c;以出色的灵活性和易用性著称。 并且与机器学习开发者和数据科学家喜欢的Python高级编程语言兼容。 什么是PyTorch PyTorch是一种构建深度模型功能完备的框架。通常用于图像识别和语言处理等。 使用Python编写&#xff0c;学习和…

UI自动化测试之Airtest让你的测试工作如虎添翼!

本文我们讲解下Airtest的使用&#xff0c;主要学习目标有以下几点&#xff1a; &#xff08;1&#xff09;认识Airtest &#xff08;2&#xff09;了解Airtest能做什么 &#xff08;3&#xff09;Airtest安装及环境搭建 &#xff08;4&#xff09;掌握Airtest图形化api使用 &am…

【MySQL】记录的基本操作

文章目录 插入数据为表中所有字段插入数据为表中指定字段插入数据同时插入多条数据 更新数据删除数据TRUNCATE和DETELE的区别 查询数据 插入数据 为表中所有字段插入数据 基本语法 INSERT INTO 表名&#xff08;字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 # 准备一张表…

算法模板(4):动态规划(4) 做题积累(2)

动态规划 9. 单调队列优化DP 1. 1088. 旅行问题 John 打算驾驶一辆汽车周游一个环形公路。 公路上总共有 n 个车站&#xff0c;每站都有若干升汽油&#xff08;有的站可能油量为零&#xff09;&#xff0c;每升油可以让汽车行驶一千米。 John 必须从某个车站出发&#xff…

接口自动化-让你了解数据库相关知识

目录 python接口自动化实战 数据库 写一个对数据库操作的类 python接口自动化实战 目标 学习数据库相关&#xff0c;用例增加对数据库校验 利用数据库完成对数据查询 如何校验数据库数据&#xff0c;怎样添加校验让程序自己校验&#xff08;充值、提现、投资接口对金额的…

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs)

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

分布式项目17 订单order,用dubbo来实现

说明&#xff1a;只要当一个订单生成时&#xff0c;处理订单的信息之外&#xff0c;还有订单中包含的订单商品数据以及订单物流信息&#xff0c;而订单的信息封装在“tb_order”表中&#xff0c;关于tb_order表结构如下图所示&#xff1a; 订单商品数据封装在“tb_order_item”…

STM32使用PWM实现led亮度变化

原理及代码讲解 1.序言2.频率3.占空比4.控制led亮度变化原理5.代码实例5.1 初始化引脚5.2 配置定时器15.3配置输出PWM 6.结语 1.序言 这里我以stm32F103c8te为例&#xff0c;讲解一下pwm如何输出&#xff0c; pwm又是如何控制led灯的亮度变化&#xff0c;以及具体代码又是 如何…

53、基于51单片机蓄电池充电器过充过放保护LCD液晶屏显示系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

方案选择 单片机的选择 方案一&#xff1a;AT89C52是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元&…

STL之Stack与queue的模拟实现与duque的底层结构(3千字长文详解)

STL之Stack与queue的模拟实现与duque的底层结构 文章目录 STL之Stack与queue的模拟实现与duque的底层结构设计模式的概念适配器模式 stack的实现queue的实现双端队列——dequedeque的底层结构 设计模式的概念 设计模式像是古代的兵法&#xff0c;是以前的人总结出来的一些在特定…

TClientDataSet 模拟 EXCEL表

日常处理数据时&#xff0c;经常需要&#xff0c;从EXCEL表格中&#xff0c;批量导入数据&#xff0c;通过 XLSReadWriteII编程&#xff0c;会很快导入。 但是&#xff0c;客户提供的EXCEL表的字段&#xff0c;数据格式&#xff0c;字段的排序&#xff0c;有很大的区别。因此&a…

PostmanScript脚本功能使用详解!

目录 前言&#xff1a; 一、Pre-requestScript 二、TestScript 三、随机参数&#xff1a; 前言&#xff1a; Postman 是一个强大的 API 工具&#xff0c;可以用于构建、测试和文档化 Web API。Postman 还提供了一个名为 PostmanScript 的功能&#xff0c;它可以用于自动化…

【5】Midjourney Prompt

Prompt 是Midjourney Bot解释以生成图像的简短文本短语。 Midjourney Bot将Prompt 中的单词和短语分解成为Token的较小部分&#xff0c;可以将其与训练数据进行比较&#xff0c;然后用于生成图像。 精心制作的 Prompt可以帮助生成独特且令人兴奋的图像。 Structure 结构 基本…

Spring Boot + Vue3前后端分离实战wiki知识库系统<八>--分类管理功能开发二

接着上一次Spring Boot Vue3 前后端分离 实战 wiki 知识库系统&#xff1c;七&#xff1e;--分类管理功能开发的分类功能继续完善。 分类编辑功能优化&#xff1a; 概述&#xff1a; 现在分类编辑时的界面长这样&#xff1a; 很明显目前的父分类的展现形式不太人性&#xf…

【JVM】JVM常用指令

文章目录 1、jps2、jinfo3、jstat4、jstack5、jmap6、jhat 1、jps jps&#xff08;java process status tool&#xff09;&#xff0c; 用于查看java进程及相关信息&#xff0c;如果你想找到一个java进程的pid&#xff0c;可以使用jps命令代替linux的ps命令。 命令格式&#…