前言

<> 非常感谢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动静分离,首先要确保各个资源都代理至正确的主机,而后将所有的资源全部代理至动态服务器。

环境

配置前提


所有节点时间同步。
关闭防火墙、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><?phpphpinfo();?></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";elseecho "connect 172.16.0.69 failure";
?>

测试连接




给静态服务器一份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     

测试访问




查看是否动静分离

172.16.0.68静态服务器上查看

172.16.0.69动态服务器上查看

转载于:https://blog.51cto.com/sonlich/2060785

CentOS 7.1.1503 varnish动静分离反代用户请求相关推荐

  1. CentOS 7.3:LAMP 动静分离部署

    前言 之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大 ...

  2. 秒杀优化 动静分离

    一个技术关键点:数据的动静分离 为什么做数据的动静分离? 对于一个秒杀系统来说,在秒杀的场景下,对系统的要求就是三个方面:一是快,二是准,三是稳定. 如何让系统的更快,主要有两个思路:一是提高每一次请 ...

  3. 理论+实操:部署nginx+apache动静分离

    文章目录 一:nginx动静分离介绍 1.1 nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术 1.2 针对PHP的动静分离 1.3 在nginx的配置中,是通过lo ...

  4. 动静分离和前后端分离

    一.前端和后端的概念(怎么区分是前端还是后端) 什么是前端? 这又可以分解成几个小问题. 1.JS是前端么? 2.只要用JS写的,都是前端么? 3.只要是前端工程师写的,都是前端么?4.大前端就是指的 ...

  5. Nginx——动静分离

    1.动静分离: 将动态请求与静态请求分离开,动态请求经过nginx访问tomcat服务器,nginx可以直接做静态请求服务器,静态请求直接由nginx处理,动态请求由tomcat处理. 2.动静分离实 ...

  6. 动静分离java html_简单了解动静分离和前后端分离

    一.前端和后端的概念(怎么区分是前端还是后端) 什么是前端? 这又可以分解成几个小问题. 1.JS是前端么? 2.只要用JS写的,都是前端么? 3.只要是前端工程师写的,都是前端么?4.大前端就是指的 ...

  7. Nginx+httpd反代实现动静分离

    什么是动静分离 为了提高网站的响应速度,减轻程序服务器(apache+php,nginx+php等)的负载,对于静态资源比如图片,js,css,html等静态文件,我们可以在反向代理服务器中设置,将访 ...

  8. LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存

    原文  http://sohudrgon.blog.51cto.com/3088108/1601842 系统架构图: 主机规划列表: 全部的主机: CPU : Intel(R) Core(TM)i5- ...

  9. Nginx+Varnish 实现动静分离,为服务器分流,降低服务器负载

    相必大家在看加快网站响应速度方面的文章时,都提过这么一条:动静分离.那怎样实现动静分离呢,这里笔者就亲自搭建相关服务实现动静分离. 动静分离是一种架构,就是把静态文件,比如JS.CSS.图片甚至有些静 ...

最新文章

  1. (转)自动化管理工具Saltstack之nginx部署
  2. LeetCode455 分发饼干(二分法)
  3. 统计学习及监督学习概论
  4. YUI事件体系之Y.EventTarget
  5. 2012年最佳30款免费 WordPress 主题
  6. mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍
  7. attilax.java 注解的本质and 使用最佳实践(3)O7
  8. 科研绘图软件GraphPad Prism教程(一)
  9. 数据库中的超键 候选键 主键 外键
  10. 集线器故障诊断与排除
  11. Win10无法访问共享文件,错误代码0x80004005
  12. 针对笔记本双显卡安装ubuntu16.04双系统,开机只显示背景图解决办法
  13. 挖个大坑:挑战用纯micropython写一个nes模拟器(一)
  14. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp
  15. 王者荣耀服务器维护到几点,今晚王者荣耀更新到几点 王者荣耀维护时间王者荣耀公告...
  16. UWP开发:获取用户当前所在的网络环境(WiFi、移动网络、LAN…)
  17. 【历史上的今天】8 月 2 日:字节跳动收购 Musical.ly;PlayStation 之父诞生;早期的女性计算机先驱
  18. C语言讲义——内存管理
  19. 关于pwd的含义及用法
  20. 猪齿鱼Choerodon UI的级联数据源之间、非级联数据源之间的请求状态进行关联

热门文章

  1. 修改system.img的大小限制
  2. VB APP对象属性一览表 + 灵活使用VB的APP对象
  3. ubuntu安装rpm的方法
  4. 用DOS的FOR命令高速ping指定的所有局域网机器
  5. 凭一张照片找到视频中你所有的镜头,包括背影丨商汤ECCV 2018论文
  6. 7天速成、免费学习,这套Python入门课我收藏了丨资源帖
  7. 奥巴马吐槽川普“笨蛋”的视频火了,这又得“归功”于AI
  8. 地平线获近亿美元A+轮融资,AI时代的英特尔被英特尔领投
  9. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件)
  10. Ignite与Spark内存计算平台对比分析