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

实战项目演练

  • 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服务器),此处略!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法刷题-哈希表-两数之和

两数之和 1. 两数之和思路总结其他语言版本 1. 两数之和 力扣题目链接 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中…

CSS基础学习--6 CSS Text(文本)

一、文本颜色 color:red; 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000一个RGB值 - 如: RGB(255,0,0)颜色的名称 - 如: red body {color:red;} h1 {color:#00ff00;} h2 {color:rgb(255,0,0);} 二、文本的…

无敌!我用【C语言】手搓出了一个体系完整的【员工管理系统】还能玩游戏听音乐?(超详细,附完整源码)

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;C语言程序设计实验项目 如果本文对你有所帮助的话&#xff0c;还希望可以点赞&#x1f44d;收藏&#x1f4c2;支持一下…

【云原生 | 53】Docker三剑客之Docker Compose应用案例一:Web负载均衡

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

React Hook入门小案例 在函数式组件中使用state响应式数据

Hook是react 16.8 新增的特性 是希望在不编写 class的情况下 去操作state和其他react特性 Hook的话 就不建议大家使用class的形式了 当然也可以用 这个他只是不推荐 我们还是先创建一个普通的react项目 我们之前写一个react组件可以这样写 import React from "react&qu…

Java ~ Reference ~ ReferenceQueue【总结】

前言 文章 相关系列&#xff1a;《Java ~ Reference【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Reference ~ ReferenceQueue【源码】》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;相关系列&#xff1a;《Java ~ Reference ~ …

【前端 - CSS】第 9 课 - CSS 初体验

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、CSS 定义 2、基础选择器 3、文字控制属性 4、示例代码 5、总结 1、CSS 定义 层叠样式表&#xff08;Cascading Style …

前端vue地图定位并测算当前定位离目标位置距离

前端vue地图定位并测算当前定位离目标位置距离, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id12974 效果图如下: # #### 使用方法 使用方法 <!-- // 腾讯地图key注册地址&#xff08;针对H5端&#xff0c;manifest.json中web配置&…

触发器和事件自动化的讲解

触发器和事件自动化 一、触发器 1、触发器的基本概念 触发器是和表相关的一种数据库对象&#xff0c;可以将他看作一种特殊的存储过程&#xff0c;不需要人为调动的存储过程。 关键字&#xff1a;trigger 基本作用&#xff1a;通过对表进行数据的插入、更新或删除等操作来触…

XGBoost的介绍

一、XGBoost的介绍 1.什么是XGBoost&#xff1f; XGBoost&#xff08;eXtreme Gradient Boosting&#xff09;是一种基于梯度提升树的机器学习算法&#xff0c;它在解决分类和回归问题上表现出色。它是由陈天奇在2014年开发的&#xff0c;如今已成为机器学习领域中最流行和强…

那年我头脑发热,选择了自动化,后来我掉入计算机的世界无法自拔

首先&#xff0c;小雅兰是22届高考考生&#xff0c;而且当时填报志愿也没有填报到计算机相关的专业去&#xff0c;小雅兰是自动化专业的学生&#xff0c;是由于一次偶然的机会&#xff0c;了解到了这个行业&#xff0c;对于写代码所带来的成就感&#xff0c;总之&#xff0c;我…

2023春期末考试选择题R2-9AVL树插入调整详解

题目&#xff1a; 将 8, 9, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的&#xff1f; A. 4 和 6 是兄弟 B. 5 是 8 的父结点 C. 7 是根结点 D. 3 和 8 是兄弟 解题要点&#xff1a; 需要对AVL树的4种旋转方式熟悉。 AVL旋转过程&#xff1a; 根据…

人事管理项目-部门数据删除

人事管理项目-部门数据删除 后端实现前端实现 Spring Boot是一个框架&#xff0c;一种全新的编程规范&#xff0c;它的产生简化了框架的使用&#xff0c;所谓简化是指简化了Spring众多框架中所需的大量且烦琐的配置文件&#xff0c;所以Spring Boot是一个服务于框架的框架&…

使用IDEA使用Git:Git使用指北——实际操作篇

Git使用指北——实际操作 &#x1f916;:使用IDEA Git插件实际工作流程 &#x1f4a1; 本文从实际使用的角度出发&#xff0c;以IDEA Git插件为基座讲述了如果使用IDEA的Git插件来解决实际开发中的协作开发问题。本文从 远程仓库中拉取项目&#xff0c;在本地分支进行开发&…

电路模型和电路定律(3)——“电路分析”

小雅兰期末加油冲冲冲&#xff01;&#xff01;&#xff01; 复习之前的内容&#xff1a; 这样的连接方式是不可以的&#xff1a; 两个电压源&#xff0c;电压值不相同&#xff0c;是不能并联的 两个电流源&#xff0c;电流值不相同&#xff0c;是不能串联的 电流源也不能开…

PoseiSwap的趋势性如何体现?

DEX 代表了一种先进的意识形态&#xff0c;相对于 CEX 其更强调无许可、去中心化以及公开透明。然而随着 DeFi 赛道逐渐从 2021 年年底的高峰逐渐转向低谷&#xff0c;DEX 整体的交易量、TVL等数据指标也开始呈现下滑的趋势&#xff0c;DEX 正在面临发展的新瓶颈期。 在这样的背…

漂亮国因一颗气球而疯狂给质量团队带来的启示

最近漂亮国因为我国的一颗漂洋过海的淘气的民用气球而疯狂。这颗气球成功躲过了号称全球最先进的防空系统&#xff0c;跨越大半个漂亮国&#xff0c;直到被一居民拍照无意间发现&#xff0c;漂亮国才反应过来。多次派战斗机拦截无果&#xff0c;在气球降到15km后&#xff0c;F2…

【云原生】Docker容器服务更新与发现之consul

1.consul的相关知识 1.1 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0…

day8 栈顶的种类与应用

目录 多寄存器访问指令与寻址方式 多寄存器内存访问指令 多寄存器内存访问指令的寻址方式 ​编辑 栈的种类与使用 栈的概念 栈的分类 栈的应用举例 叶子函数的调用过程举例 多寄存器访问指令与寻址方式 多寄存器内存访问指令 MOV R1, #1 MOV R2, #2 MOV R3, #3 MOV R…

PL2303HXA自2012已停产,请联系供货商的解决办法

一、概述 PL2303 是Prolific 公司生产的一种高度集成的接口转换器&#xff0c;可提供一个RS232 全双工异步串行通信装置与USB 功能接口便利连接的解决方案。PL2303具有多个历史版本&#xff0c;早期的版本是PL2303HX, 近年有PL2303HXA、PL2303HXC、PL2303HXD&#xff08;D版本…