CentOS 7.1.1503 varnish动静分离反代用户请求

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

前言

<> 非常感谢Kason老师,您是我们成功的蜡烛,燃烧着自己,照亮我们前进的道路。

varnish配置动静分离时,这些问题困扰了两周:

  • 环境:varnish做为反代,你们都知道的:varnish,nginx, haproxy都可以做为反代服务器,varnish比较擅长缓存。后端主机一个提供动态资源及变化的资源(php, css, js),一个提供静态资源(images)
  • 每次访问varnish的6081端口,phpinfo.php和php-mysql.php都可以正常访问,肯定没有问题,但访问wodpress时,要么是NOT FOUND要么是直接将目录索引显示出来。

> 总结: 
对中小型站点的整个架构没有一个完整、清晰的认识。
我只是将老师的配置粘贴进去,从不去想真正的含义。
> * 学到puppet时,越觉得前面的东西是多么重要,了解一个个架构,才能更好的驾驶运维工具本身。


站点架构

  • 在接入层将动静分离,一般varnish不会做动静分离
  • varnish接收到图片和js,css文件后,将其反代到不同的主机。图片至分布式文件系统,js,css文件反代至业务层。
  • 所以如果在varnish动静分离,首先要确保各个资源都代理至正确的主机,而后将所有的资源全部代理至动态服务器。
    CentOS 7.1.1503 varnish动静分离反代用户请求

环境

CentOS 7.1.1503 varnish动静分离反代用户请求

配置前提


所有节点时间同步。
关闭防火墙、SELinux。
yum源:EPEL、Base。

~]# ntpdate 0.centos.pool.ntp.org
~]# iptables -F
~]# setenforce 0

配置静态服务器


安装程序包

~]# yum -y install httpd

启动服务

~]# systemctl start httpd.service

测试访问

http://172.16.0.68/
Testing 123..

配置动态服务器


安装程序包

~]# yum -y install httpd php php-mysql mariadb-server php-mbstring php-mcrypt

启动httpd服务

~]# systemctl start httpd.service

测试访问httpd服务

http://172.16.0.69/
Testing 123..

配置mariadb-server

~]# vim /etc/my.cnf.d/server.cnf 
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON

启动mariadb服务

~]# systemctl start mariadb.service
~]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     

授权用户,供wordpress使用

[root@localhost ~]# mysql
MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wpuser'@'172.16.0.%' IDENTIFIED BY 'wppass';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

测试连接mysql

~]# mysql -uwpuser -pwppass -h172.16.0.69

提供开源php资源

~]# cp wordpress-4.9.1-zh_CN.tar.gz /var/www/html/

展开php程序,为其链接

~]# tar xf wordpress-4.9.1-zh_CN.tar.gz 
~]# ln -sv wordpress wp
~]# ll
total 9912
-rw-------. 1 root   root          1637 Dec  6 02:45 anaconda-ks.cfg
-rw-r--r--. 1 root   root          1556 Jan 14 14:58 genaral_test.sh
drwxr-xr-x. 1 nobody nfsnobody      498 Nov 30 20:20 wordpress
-rw-r--r--. 1 root   root      10130710 Dec  1 18:57 wordpress-4.9.1-zh_CN.tar.gz
lrwxrwxrwx. 1 root   root             9 Jan 14 15:41 wp -> wordpress
-rw-r--r--. 1 root   root           832 Jan 14 14:58 yum.sh

提供连接mariadb-server的配置

/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'wppass');
/** MySQL主机 */
define('DB_HOST', '172.16.0.69');

提供测试页面

web测试页面

~]# cat /var/www/html/index.html 
<h1>172.16.0.69</h1>

php环境测试

 ~]# cat /var/www/html/phpinfo.php 
<html>
    <title>Test Page</title>
    <body>
        <h1>172.16.0.69</h1>
        <?php
            phpinfo();
        ?>
    </body>
</html>

php-mysql测试页面

~]# cat /var/www/html/php-mysql.php 
<?php
    $conn = mysql_connect('172.16.0.69','wpuser','wppass');
    if ($conn)
        echo "connect 172.16.0.69 success";
    else
        echo "connect 172.16.0.69 failure";
?>

测试连接

CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求

给静态服务器一份php程序

~]# scp -r /var/www/html/{wordpress,wp} 172.16.0.68:/var/www/html

配置varnish缓存服务器


安装varnish

~]# yum -y install varnish

配置varnish

~]# vim /etc/varnish/varnish.params 
‘VARNISH_LISTEN_PORT=80
VARNISH_STORAGE="file,/data/varnish/cache,1g"
~]# vim /etc/varnish/default.vcl
backend default {
    .host = "172.16.0.68";
    .port = "80";
}
backend appsrv {
    .host = "172.16.0.69";
    .port = "80";
}  
sub vcl_recv {
    if (req.url ~ "(?i)\.(php|jsp|do)$") {
            set req.backend_hint = appsrv;
    }
    if (req.url ~ "(?i)\.(css|js)$") {
            set req.backend_hint = appsrv;
    }
    if (req.url ~ "(?i)\.(jpg|jpeg|png|gif)$") {
            set req.backend_hint = default;
    } else {
            set req.backend_hint = appsrv;
    }
}

准备目录

~]# install -d -v -o varnish -g varnish /data/varnish/cache

启动varnish

~]# systemctl start varnish.service
~]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:6082          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     

测试访问

CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求
CentOS 7.1.1503 varnish动静分离反代用户请求

查看是否动静分离

172.16.0.68静态服务器上查看

CentOS 7.1.1503 varnish动静分离反代用户请求

172.16.0.69动态服务器上查看

CentOS 7.1.1503 varnish动静分离反代用户请求










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/2060785,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
缓存 负载均衡 应用服务中间件
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
71 1
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
|
网络协议 Linux 网络安全
centos 6/7 防火墙端口管理与限制来访IP请求端口
端口管理,限制来访IP访问
1651 0
|
关系型数据库 MySQL Linux
centos 7 mysql 添加远程访问用户
centos 7 mysql 添加远程访问用户
294 0
centos 7 mysql 添加远程访问用户
|
Linux 开发工具
centos 记录用户行为轨迹
centos 记录用户行为轨迹
127 0
|
分布式计算 Hadoop Linux
五十七、centos创建hadoop用户(修改hadoop用户密码,目录赋予hadoop用户权限等......)
五十七、centos创建hadoop用户(修改hadoop用户密码,目录赋予hadoop用户权限等......)
五十七、centos创建hadoop用户(修改hadoop用户密码,目录赋予hadoop用户权限等......)
|
Shell Linux 开发工具
CentOS7创建多个用户的方法
CentOS7创建多个用户的方法
1154 0
|
Linux 网络安全 开发工具
|
消息中间件 Linux 编译器