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

前端之家收集整理的这篇文章主要介绍了CentOS 7.1.1503 varnish动静分离反代用户请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

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

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

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

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


站点架构

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

环境

配置前提


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

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

配置静态服务器


安装程序包

  1. ~]# yum -y install httpd

启动服务

  1. ~]# systemctl start httpd.service

测试访问

  1. http://172.16.0.68/
  2. Testing 123..

配置动态服务器


安装程序包

  1. ~]# yum -y install httpd PHP PHP-MysqL mariadb-server PHP-mbstring PHP-mcrypt

启动httpd服务

  1. ~]# systemctl start httpd.service

测试访问httpd服务

  1. http://172.16.0.69/
  2. Testing 123..

配置mariadb-server

  1. ~]# vim /etc/my.cnf.d/server.cnf
  2. [MysqLd]
  3. skip_name_resolve = ON
  4. innodb_file_per_table = ON

启动mariadb服务

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

授权用户,供wordpress使用

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

测试连接MysqL

  1. ~]# MysqL -uwpuser -pwppass -h172.16.0.69

提供开源PHP资源

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

展开PHP程序,为其链接

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

提供连接mariadb-server的配置

  1. /** wordpress数据库名称 */
  2. define('DB_NAME','wordpress');
  3. /** MysqL数据库用户名 */
  4. define('DB_USER','wpuser');
  5. /** MysqL数据库密码 */
  6. define('DB_PASSWORD','wppass');
  7. /** MysqL主机 */
  8. define('DB_HOST','172.16.0.69');

提供测试页面

web测试页面

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

PHP环境测试

  1. ~]# cat /var/www/html/PHPinfo.PHP
  2. <html>
  3. <title>Test Page</title>
  4. <body>
  5. <h1>172.16.0.69</h1>
  6. <?PHP
  7. PHPinfo();
  8. ?>
  9. </body>
  10. </html>

PHP-MysqL测试页面

  1. ~]# cat /var/www/html/PHP-MysqL.PHP
  2. <?PHP
  3. $conn = MysqL_connect('172.16.0.69','wpuser','wppass');
  4. if ($conn)
  5. echo "connect 172.16.0.69 success";
  6. else
  7. echo "connect 172.16.0.69 failure";
  8. ?>

测试连接

给静态服务器一份PHP程序

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

配置varnish缓存服务器


安装varnish

  1. ~]# yum -y install varnish

配置varnish

  1. ~]# vim /etc/varnish/varnish.params
  2. VARNISH_LISTEN_PORT=80
  3. VARNISH_STORAGE="file,/data/varnish/cache,1g"
  1. ~]# vim /etc/varnish/default.vcl
  2. backend default {
  3. .host = "172.16.0.68";
  4. .port = "80";
  5. }
  6. backend appsrv {
  7. .host = "172.16.0.69";
  8. .port = "80";
  9. }
  10. sub vcl_recv {
  11. if (req.url ~ "(?i)\.(PHP|jsp|do)$") {
  12. set req.backend_hint = appsrv;
  13. }
  14. if (req.url ~ "(?i)\.(css|js)$") {
  15. set req.backend_hint = appsrv;
  16. }
  17. if (req.url ~ "(?i)\.(jpg|jpeg|png|gif)$") {
  18. set req.backend_hint = default;
  19. } else {
  20. set req.backend_hint = appsrv;
  21. }
  22. }

准备目录

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

启动varnish

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

测试访问

查看是否动静分离

172.16.0.68静态服务器上查看

172.16.0.69动态服务器上查看

猜你在找的CentOS相关文章