apache、nginx的虚拟域名配置和rewrite配置,以及web缓存的几种方式
web缓存一般用来缓解数据库压力。
通常有几种方法,文件静态化,缓存服务memcached、redis等。
伪静态,一般指在url上貌似访问静态html页的形式,这样有利于搜索引擎访问到网站页面,实际是在web服务器的入口进行了解析(比如pathinfo这种访问方式,可以利用apache或者nginx进行rewrite配置,或者脚本里进行正则解析),这仍然是动态页面。
这里插播一下,apache和nginx配置虚拟域名。这篇文章写的不错https://www.zybuluo.com/phper/note/73726
apache配置虚拟域名:在httpd.conf打开虚拟域名服务模块。找到虚拟域名的这个配置文件,在里面加域名。
配置规则如下图:

DocumentRoot就是网站访问的文件根目录。ServerName 就是访问的域名。RewriteEngine是否开启rewrite引擎。就是apache的rewrite配置。
nginx的虚拟域名配置:方法不知一个,一种方法是,在nginx.conf文件里include一个目录(比如conf.d)下的文件。

然后在conf.d的目录里,写入各个虚拟域名的配置文件。比如abc.baidu.com.conf、xyz.baidu.com.conf等。
在一个虚拟域名配置文件里:

nginx的rewirte配置:

知识点插播over-------
文件静态化,比如门户网站的新闻,这些东西一般一段时间内不会发生变化,并且访问的人很多。如果每次都是从db里取,那么数据库资源还是很紧张的。这是可以考虑静态化,即生成静态文件,下次有用户访问的时候,直接取这个静态文件而不是去db里读。
php有个很方便的生成文件函数,file_put_contents();
比如一堆新闻列表数据$str,从数据库里读出来,然后include一个view页面。此时,需要把这个页面静态化起来,放到某个比如/data/www/site/news/111.html文件里。
开启一个缓冲区,把这个页面的内容放到缓冲区(比如include这个view),然后放到静态化文件里。
可以这样file_put_contents('/data/www/site/news/111.html', ob_get_contents());
这里再插播一个php缓冲区的知识点:
ob_start();// 开启一个缓冲区 echo 'str1';
echo 'str2'; $str = ob_get_contents();// 获取缓冲区内容 ob_clean();// 清空缓冲区 //$str = ob_get_clean();// 获取并清空 echo $str;// str1str2
第一行开启一个缓冲区,那么3、4行echo出的字符串就进入到了这个缓冲区。
然后把缓冲区的内容赋给了一个变量,再清空缓冲区。那么3、4行的代码就不会输出在浏览器(因为缓冲区被清除了)。而会输出那个被赋值的变量。
生成静态化文件以后,当然需要应对变化,比如新闻列表要改动了。这样需要重新读db,然后再覆盖静态文件。
有几种方式,可以设置定时任务,在一段时间后定时重新生成;做一个直接立刻删除缓存的触发;还可以判断time,filemtime,filectime的差看是否失效(失效时间可根据业务定)。等等方式
局部静态化,意思就是动态程序里,有一部分数据利用了页面静态化(即没读取db数据)。
局部动态化,就是在静态化文件里,也有一部分访问了服务器,比如ajax技术。
apache、nginx的虚拟域名配置和rewrite配置,以及web缓存的几种方式的更多相关文章
- apache与nginx的虚拟域名配置
由于开发需求,项目有时候需要设置虚拟域名进行测试.下面是分别是apache和nginx的配置 一.apache 环境:wampserver2.5 1.修改host文件 C:\Windows\Syste ...
- nginx location配置与rewrite配置
注:原文出处 www.linuxidc.com/Linux/2015-06/119398.htm 1. location正则写法 一个示例: location =/{ # 精确匹配 / ,主机名后面不 ...
- 分布式环境配置虚拟域名,phpstudy配置虚拟域名,集成环境配置域名,域名禁止访问forbidden怎么解决
重启Apache,测试:
- struts2开发流程及配置,域对象对数据存储的3种方式
一.开发流程 1)引入 jar 包,其中必须引入的有(我是用的struts是2.3.32) commons-fileupload-1.3.2.jar |文件上传下载commons-io-2.2 ...
- windows下配置tomcat服务器的jvm内存大小的两种方式
难得遇到一次java堆内存溢出(心里想着,终于可以来一次jvm性能优化了$$) 先看下报错信息, java.lang.OutOfMemoryError: GC overhead limit excee ...
- Apache之——多虚拟主机多站点配置的两种实现方案
Apache中配置多主机多站点,可以通过两种方式实现: 将同一个域名的不同端口映射到不同的虚拟主机,不同端口映射到不同的站点: 将同一个端口映射成不同的域名,不同的域名映射到不同的站点. 我们只需要修 ...
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )
系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...
- SpringMVC基础配置(通过注解配置,非xml配置)
SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
随机推荐
- 在 Ubuntu 18.04 下安装 fcitx 及搜狗拼音输入法
感觉自己傻逼透了,之前在 16.04 时折腾着要装 ibus 和 rime 输入法,现在 18.04 默认安装 ibus 了,又因为 rime 的智能联想太弱,打字不爽,又想装回搜狗一劳永逸... 环 ...
- python练习:http协议介绍
一.HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Interne ...
- 多表联合Update更新数据
UPDATE A SET A.c2 =B.c3 from A inner join B on A.c1=B.c1 多表from子句后面
- recovery 升级'@/cache/recovery/block.map' failed错误问题
随着android版本升级,升级包越来越大,当升级包无法存储在cache分区的时候,会把升级包下载到data分区,然后从data分区升级,最近从data分区加载升级包升级的时候,遇到了如下错误: [ ...
- python第五十天--paramiko
python通过paramiko实现,ssh功能 import paramiko ssh =paramiko.SSHClient()#创建一个SSH连接对象 ssh.set_missing_host_ ...
- 【PAT】B1003 我要通过!
我觉得这是PAT中最坑的一道题,表述令人很不适应 分析过程: 条件1.只有P,A,T三种字符 条件2.xPATx正确,x可以是空串,或者由A组成的字符串 条件3.如果aPbTc是正确的,aPbATca ...
- 超详细!Github团队协作教程(Gitkraken版)
超详细!Github团队协作教程(Gitkraken版) 一.前期工作 1. 在 Github 上创建 organization step1. 登录Github网站,点击右上角头像,选择 " ...
- ASP.NET WebAPI 双向token实现对接小程序登录逻辑
最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...
- Git的上传步骤
Git的上传步骤 1.Git的命令基础 Git是当下最流行的版本控制工具(VCS),由linux系统之父linus开发.它能实现 团队中的代码协作开发,它在代码同步和代码管理方面功能强大,理念先进. ...
- 怎样从本地删除git远程仓库里面的文件
git是大家通用的一种版本控制系统,便捷高效,各种命令需要牢记,今天小渔介绍给大家的是git的删除命令,即将文件从远程仓库中删除的操作. 方法/步骤 首先,我们打开自己的本地GIT仓库,在根目 ...