目录
实验配置:
7-1为内网Nginx服务器;7-2和7-3为Web服务器;7-4为网关服务器;7-5为外网客户机;
yum安装Nginx;yum安装Mysql;
编译安装PHP;编译安装
由于我们Nginx和Mysql都是yum安装,实验配置略有改动
1.PHP调整主配置文件时,修改文件内容
1.原内容调整(在编译安装的情况下)
cp /opt/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
2.调整如下
--1170行--修改
mysqli.default_socket = /var/lib/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai
3.没有调整的,根据之前配置就行
2.配置Nginx支持PHP解析
1.原内容如下
vim /usr/local/nginx/conf/nginx.conf
--65行--取消注释,修改
location ~ \.php$ {
root html; $document_root
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #将 /scripts 修改为nginx的工作目录
include fastcgi_params;
}
2.调整如下
vim /etc/nginx/nginx.conf
--65行--取消注释,修改
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; #将 /scripts 修改为nginx的工作目录
include fastcgi_params;
}
vim /etc/nginx/nginx.conf
root html;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; #将 /scripts 修改为nginx的工作目录
[root@localhost fpm]# vim /etc/nginx/nginx.conf
[root@localhost fpm]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost fpm]# nginx -s reload
nginx: [error] invalid PID number "" in "/run/nginx.pid"
[root@localhost fpm]# systemctl start nginx
[root@localhost fpm]# nginx -s reload
3.验证PHP测试页
1.原内容如下
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
systemctl restart nginx.service
2.调整如下
vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
systemctl restart nginx.service
4.安装论坛,下载安装包
1.原内容如下
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
2.调整如下
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/share/nginx/html/bbs/
5.调整论坛权限
1.原内容如下
cd /usr/local/nginx/html/bbs/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
2.调整如下
cd /usr/share/nginx/html/bbs/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
6.论坛页面访问
http://192.168.91.100/bbs/index.php
或者在nginx主配置文件中加入:
index index.html index.htm index.php;
第二题:
为nginx服务配置虚拟主机,新增两个域名 www.kgc.com 和 www.benet.com,使用http://www.kgc.com/index.php可访问上一题的Discuz论坛页面。
使用http://www.benet.com则访问/var/www/html目录中的index.html文件的内容,内容自定义。
1.修改配置文件
38 server {
39 listen 80;
40 server_name www.benet.com;
41 root /var/www/html;
42 }
47 server_name www.kgc.com;
2.本机中添加域名
C:\Windows\System32\drivers\etc\hosts
3.为www.benet.com创建页面
[root@localhost bbs]# mkdir -p /var/www/html
[root@localhost bbs]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# echo `pwd` > index.html
[root@localhost html]# cat index.html
/var/www/html
4.测试页面效果
第三题:
对基于www.benet.com域名的虚拟机主机的nginx服务调优:隐藏nginx版本号,缓存静态图片网页时间为1天,设置防盗链功能。
1.编辑配置文件
[root@localhost html]# vim /etc/nginx/nginx.conf
18 server_tokens off;
19 expires 1d;
44 location ~* \.(jpg|gif|png)$ {
45 valid_referers none bloaced *.benet.com benet.com;
46 if ( $invalid_referer ) {
47 return 403;
48 }
49 }
2.为防盗链功能添加图片
3.在7-2Tomcat服务器上安装httpd服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vim index.html
[root@localhost html]# systemctl restart httpd
<html>
<body>
<h1>this is yunjisuan</h1>
<img src="http://www.benet.com/11.jpg"/>
</body>
</html>
4.当我们没有设置防盗链时
5.当我们设置完防盗链时
第四题:
网关服务器搭建NFS服务,提供的文件系统使用LVM类型,共享目录名称为/opt/nfs;要求根据日期对Discuz论坛服务的访问日志进行日志分割,要求每天生成一份日志文件,保存到NFS服务共享的目录内
1.开启7-4网关服务器的NFS
[root@localhost ~]# systemctl start nfs
[root@localhost ~]#
[root@localhost ~]# systemctl status nfs
2.设置共享目录
因为我们根本身就是逻辑卷;所以就不另外添加磁盘了,就在根下面做
[root@localhost ~]# mkdir /opt/nfs
[root@localhost ~]# cd /opt
[root@localhost opt]# cat /etc/exports
/opt/nfs *
[root@localhost opt]# exportfs -r
exportfs: No options for /opt/nfs *: suggest *(sync) to avoid warning
[root@localhost opt]# exportfs -v
/opt/nfs <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
3.去7-1挂载共享目录
[root@localhost html]# showmount -e 192.168.91.104
Export list for 192.168.91.104:
/opt/nfs *
[root@localhost html]# mount 192.168.91.104:/opt/nfs /mnt
[root@localhost html]# df
4.日志分割
1.修改7-1配置文件
vim /etc/nginx/nginx.conf
43 access_log /opt/benet.log main;
看一下opt下,有没有生成benet.log
2.在7-1的html下创建日志脚本
#!/bin/bash
pid=`cat /run/nginx.pid`
cd /opt
mv benet.log /mnt/`date +%F`
touch benet.log
kill -USR1 ${pid}
找nginx的pid路径
3.当我们没有运行脚本时
4.当我们访问www.benet.com页面后
先运行脚本
访问页面
看日志用量是否发生改变
5.给日志定时
[root@localhost html]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost html]#
[root@localhost html]# crontab -l
0 23 * * * /var/www/html/log.sh
第五题:
要求配置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。
1.修改7-1配置文件
要求配置location匹配请求地址http://www.kgc.com/test/XXXX,使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容。
58 location /test {
59 alias /var/share/nginx/html;
60 }
2.创建被访问文件内容
[root@localhost ~]# mkdir -p /var/share/nginx/html
[root@localhost ~]#
[root@localhost ~]# echo /var/share/nginx/html > /var/share/nginx/html/index.html
[root@localhost ~]# cat /var/share/nginx/html/index.html
/var/share/nginx/html
3.修改7-1配置文件
要求使用rewrite将使用域名www.benet.com 请求以 .php 结尾的访问都跳转到域名www.kgc.com上,而且后面的参数保持不变,比如访问http://www.benet.com/bbs/index.php跳转到http://www.kgc.com/bbs/index.php。
45 location ~* \.php$ {
46 rewrite ^/(.*) http://www.kgc.com/$1 permanent;
47 }
4.测试结果
成功跳转
第六题:
在Nginx服务器上对基于www.benet.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat 服务器处理,并实现负载均衡
1.修改7-1的配置文件
25 upstream tomcat {
26 server 192.168.91.102:8080;
27 server 192.168.91.103:8080;
28 }
49 location ~* \.jsp {
50 proxy_pass http://tomcat;
51 }
2.测试结果
第七题:
在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问也可实现上一题的效果。
解析:
###我们想要客户机7-5用7-4网关服务器的ens36接口IP地址(12.0.0.1)去访问www.benet.com/index.jsp,从而得到我们在 Tomcat服务器中配置的 动态页面;
###所以这是外网(7-5IP:12.0.0.12)访问内网(7-1IP:192.168.91.100)
###所以我们使用的是DNAT
1.配置网关服务器7-4
1.添加一个网卡
2.配置网卡ens36
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
3.配置网卡ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7abd6f7b-b026-4959-80e0-52bdb768b839
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.91.104
NETMASK=255.255.255.0
GATEWAY=192.168.91.104
4.重启网卡并开启路由转发
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# sysctl -a |grep ip_forward
[root@localhost network-scripts]# vim /etc/sysctl.conf
[root@localhost network-scripts]# sysctl -p
[root@localhost network-scripts]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1
2.配置外网客户机7-5
1.修改网卡
[root@centos5 ~]# cd /etc/sysconfig/network-scripts
[root@centos5 network-scripts]# vim ifcfg-ens33
[root@centos5 network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5c9d3e71-28e2-4af2-8d5a-a5a37195146f
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.12
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
[root@centos5 network-scripts]# systemctl restart network
3.配置内网Nginx服务器7-1
1.修改网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c1d6be33-1c8f-4836-a6ae-4e14aeca1923
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.91.100
NETMASK=255.255.255.0
GATEWAY=192.168.91.104
[root@localhost ~]# systemctl restart network
4.配置7-4网关服务器
[root@localhost network-scripts]# iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.91.100
###相当于;将内网地址(7-1:192.168.91.100)映射在公网上 (网关:12.0.0.1);让外网可以访问(7-5:12.0.0.12)