从零开始用lnmp架构搭建web服务器(下)

1,898 阅读4分钟

实验架构

image.png 服务器IP地址规划:client:12.0.0.12/24,网关服务器:ens36:12.0.0.1/24、ens33:192.168.10.1/24,Web1:192.168.10.10/24,Web2:192.168.10.20/24,Nginx:192.168.10.101/24。

实验目标

第一题在我上一篇文章里从零开始用lnmp架构搭建web服务器(上) - 掘金 (juejin.cn),这篇我们从第二题开始

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

2)为nginx服务配置虚拟主机,新增两个域名 www.cxk.com www.wyf.com,使用http://www.kgc.com/index.php可访问上一实验的Discuz论坛页面。

使用http://www.wyf.com则访问/var/www/html目录中的index.html文件的内容,内容自定义

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

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

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

要求使用rewrite将使用域名www.wyf.com 请求以 .php 结尾的访问都跳转到域名www.cxk.com上,而且后面的参数保持不变,比如访问http://www.wyf.com/bbs/index.php跳转到http://www.cxk.com/bbs/index.php

6)在Nginx服务器上对基于www.cxk.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat 服务器处理,并实现负载均衡 7)在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问

2为nginx服务配置虚拟主机,新增两个域名 http://www.kgc.com/index.php可访问上一实验的Discuz论坛页面

在主配置文件中http语句块中添加

 server {
        listen 80; 
        server_name www.cxk.com;
        root /apps/nginx/html;
        location ~ \.php$ {     #匹配所有以`.php`结尾的URL
            root           html;    #定义请求的根目录
            fastcgi_pass   127.0.0.1:9000;   #Nginx应该将请求传递给哪个FastCGI服务器
            fastcgi_index  index.php;   # 定义默认的FastCGI索引文件
            fastcgi_param  SCRIPT_FILENAME  /apps/nginx/html$fastcgi_script_name; # 找到要执行的PHP脚本的完整路径
            include        fastcgi_params;   #指定FastCGI参数默认值的文件
        }
    }

    server {
        listen 80;
        server_name www.wyf.com;
        root /apps/nginx/html;
    }

    }

image.png 添加客户端的域名解析

image.png 有一点小小的问题 ,在我输入uri时候要输入bbs这个文件夹 ,和题目要求不一样

image.png

调整配置文件

image.png

image.png

3对基于www.wyf.com域名的虚拟机主机的nginx服务调优

隐藏版本号以及缓存静态图片网页时间为1天

image.png

image.png

这个实验的防盗链是通过valid——referers 白名单的方法过滤出请求的客户端,说人话就是 请求只有从www.wyf.com 这台机子发出,才可以跳转到图片页面

4 网关服务器搭建NFS服务,提供的文件系统使用LVM类型,共享目录名称为/opt/nfs;

建立逻辑卷

image.png

image.png 挂载逻辑卷

image.png

建立目录共享

image.png

启动nfs服务。。。 nginx服务挂载共享目录

image.png

image.png

4根据日期对Discuz论坛服务的访问日志进行日志分割,每天生成一份日志文件,保存到NFS服务共享的目录内

思路是 创建分割日志文件的脚本,添加定时任务

脚本内容:重命名日志文件、重启nginx Screenshot 2024-06-13 131011.png

要给网关服务器共享的那个目录 /opt/nfs 权限

image.png

脚本可以分割文件了,开始写定时计划每天执行一次 输入 crontab -e 命令来编辑当前用户的 crontab 文件

0 0 * * * /bin/bash /path/to/your/script.sh
这行表示在每天的凌晨0点0分执行 /path/to/your/script.sh 脚本。

image.png

image.png

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

image.png 重读配置 测试

image.png

image.png

5 使用rewrite将使用域名www.wyf.com 请求以 .php 结尾的访问都跳转到域名www.cxk.com上,而且后面的参数保持不变

image.png image.png

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

创建负载均衡组 image.png

image.png 访问测试 image.png

7在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问

现在12.0.0.12可以ping通nginx192.168.10.1 ,由于我没有设置192.168.10.10的网关 ,所以12.0.0.12不能和192.168.10.10通讯但是nginx有反向代理的功能,我们可以通过反向代理访问tomcat

image.png

没看懂这题啥意思,假设通过网关服务器12.0.0.1的ens36端口映射成192.168.10.10,现在不做dnat,又不通过反向代理的话是访问不到192.168.10.10的tomcat页面的

在网关服务器上设置 DNAT 规则,将流量从 12.0.0.1 转发到 192.168.10.10 的 8080 端口

先确认开启路由转发

sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

iptables -t nat -A PREROUTING -p tcp -d 12.0.0.1 --dport 80 -j DNAT --to-destination 192.168.10.10:8080

image.png 访问网关服务器的ens36 相当于访问19.2168.10.10:80端口

image.png