实验架构
服务器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;
}
}
添加客户端的域名解析
有一点小小的问题 ,在我输入uri时候要输入bbs这个文件夹 ,和题目要求不一样
调整配置文件
3对基于www.wyf.com域名的虚拟机主机的nginx服务调优
隐藏版本号以及缓存静态图片网页时间为1天
这个实验的防盗链是通过valid——referers 白名单的方法过滤出请求的客户端,说人话就是 请求只有从www.wyf.com 这台机子发出,才可以跳转到图片页面
4 网关服务器搭建NFS服务,提供的文件系统使用LVM类型,共享目录名称为/opt/nfs;
建立逻辑卷
挂载逻辑卷
建立目录共享
启动nfs服务。。。 nginx服务挂载共享目录
4根据日期对Discuz论坛服务的访问日志进行日志分割,每天生成一份日志文件,保存到NFS服务共享的目录内
思路是 创建分割日志文件的脚本,添加定时任务
脚本内容:重命名日志文件、重启nginx
要给网关服务器共享的那个目录 /opt/nfs 权限
脚本可以分割文件了,开始写定时计划每天执行一次
输入 crontab -e 命令来编辑当前用户的 crontab 文件
0 0 * * * /bin/bash /path/to/your/script.sh
这行表示在每天的凌晨0点0分执行 /path/to/your/script.sh 脚本。
5)要求配置location匹配请求地址http://www.cxk.com/test/XXXX使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容
重读配置 测试
5 使用rewrite将使用域名www.wyf.com 请求以 .php 结尾的访问都跳转到域名www.cxk.com上,而且后面的参数保持不变
6在Nginx服务器上对基于www.cxk.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat 服务器处理,并实现负载均衡**
创建负载均衡组
访问测试
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
没看懂这题啥意思,假设通过网关服务器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
访问网关服务器的ens36 相当于访问19.2168.10.10:80端口