详解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.实验操作步骤

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

2.1 CentOS 7-1客户端配置

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

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

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

(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

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

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

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 

详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)_第6张图片
(5)浏览器访问

http://192.168.80.80:8080

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

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"%>


JSP test1 page!


<% out.println("IP:192.168.80.80:80-----动态页面http://www.test1.com");%>


修改tomcat服务的主配置文件

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

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

systemctl restart tomcat
netstat -lntp | grep java

在这里插入图片描述

浏览器访问测试

http://192.168.80.80:80

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

http://192.168.80.80:80

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

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

http://192.168.80.100:80

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

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

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

(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;

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

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

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

(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
phpinfo();
?>

mv index.html index.html.bak

浏览器访问

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

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

(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      #配置连接数据库的测试页面
connect('192.168.80.90','bbsadmin','123');
if($link) echo "

connect successfuly!!!

"
; else echo "

connect failed!!!

"
; ?>

浏览器访问

http://192.168.80.90/test.php

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

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

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

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

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

(3)论坛页面访问

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

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

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

http://192.168.80.90/bbs/index.php

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

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

http://192.168.80.90/bbs/admin.php

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

2.4.5 配置Nginx虚拟主机

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

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

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

###www.benet.com域名的网页访问内容
echo "

BENET:www.benet.com

"
> /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域名访问论坛网页内容;
详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)_第19张图片
通过www.benet.com域名访问到/var/www/html目录下自定义的网页内容;
详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)_第20张图片

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

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

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

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

cd /var/www/html
rz -E
ls
###canshu.png  index.html


benet Web

BENET:www.benet.com

look,my girl!!!

"canshu.png" />

修改缓存关键字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

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

设置网页压缩功能

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

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

设置防盗链功能

防盗链主机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


daolian test

this is dao lian web!!!!!

"http://www.benet.com/canshu.png" />

(4)修改Tomcat主配置文件

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

systemctl restart tomcat 

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

浏览器访问盗链主机

http://www.top100.com:8080

详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)_第24张图片
浏览器访问防盗链主机

http://www.benet.com

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

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


Alias kgc Web

KGC:www.kgc.com,but my location:/var/share/nginx/html!!!

look,my girl!!!

"weihu.png" />

修改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

详解WEB集群服务(LNMP+Nginx+Tomcat+Rewrite重写+七层反向代理+SNAT|DNAT策略)_第26张图片
(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

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

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

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

动态页面访问测试;

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

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

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

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

你可能感兴趣的:(web服务器集群,运维,云计算,nginx,tomcat,运维,linux,云计算)