分类目录归档:网站建设

HTTP的303、307状态码[转]

之前在《http权威指南》中看到了HTTP的307状态码,当时因为没有找到可以实验的网站所以没有比较深的印象,今天在排查一个问题的时候恰巧遇到了HTTP/1.1 307 TemporaryRedirect,所以特意记录一下。
客户的站点url为:https://www.seechina.com.cn:80,我用命令curl https://www.seechina.com.cn:80 -vv执行的结果如下:

* Rebuilt URL to: https://www.seechina.com.cn:80/
*   Trying 211.144.139.247...
* Connected to www.seechina.com.cn (211.144.139.247) port 80 (#0)
> GET / HTTP/1.1
> Host: www.seechina.com.cn
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 307 TemporaryRedirect
< Location: /?yikikata=d3908be2-33736dde0511d0b7f16717dcfedec055
< Set-Cookie: yikikata=002958da2a94eab3-96182107bc098e83663ea13afe4060a7
< Content-Length:0
< Connection: close
< 
* Closing connection 0

从上面的输出来看站点返回了307 TemporaryRedirect状态码,提示我们访问的url临时跳转到了另外的一个url上。
之前很多时候我只注意到301 Moved Permanently、302 Found这两个状态码,还没有遇到过307 Temporary Redirect的情况。在HTTP /1.1中新增了303 See Other、307 Temporary Redirect这两个状态码,这两个状态码和301、302状态码有什么区别呢?
这个回答其实在wikipedia上面有HTTP状态码的详细解释,我这里大概总结一下:
1. 对于301、302的location中包含的重定向url,如果请求method不是GET或者HEAD,那么浏览器是禁止自动重定向的,除非得到用户的确认,因为POST、PUT等请求是非冥等的(也就是再次请求时服务器的资源可能已经发生了变化)。
2. 虽然rfc明确了上述的规定,但是很多的浏览器不遵守这条规定,无论原来的请求方法是什么都会自动用GET方法重定向到location指定的url。就是说现存的很多浏览器在遇到POST请求返回301、302状态码的时候自动用GET请求location中的url,无需用户确认。
3. HTTP 1.1中新增了303、307状态码,用来明确服务器期待客户端进行何种反应。
4. 303状态码其实就是上面301、302状态码的”不合法”动作,指示客户端可以自动用GET方法重定向请求location中的url,无需用户确认。也就是把前面301、302状态码的处理动作”合法化”了。
5. 307状态码就是301、302原本需要遵守的规定,除GET、HEAD方法外,其他的请求方法必须等客户确认才能跳转。
6. 303、307其实就是把原来301、302不”合法”的处理动作给”合法化”,因为发现大家都不太遵守,所以干脆就增加一条规定。

文章来源:https://m.blog.csdn.net/article/details?id=51511034

vps上的wordpress搭建及优化全过程

一、VPS的申请与管理

几美元就够了,申请与安装过程略,几乎全自动化。

申请地址:https://www.banwagong.com/

登录地址:https://bandwagonhost.com/

二、安装wordpress所需环境

需要的环境有:

yum install -y httpd php  mysql mysql-server php5-mysql php-mysql.i686 php-mbstring

其他常用工具一并安装:

yum install lrzsz mtr bind-utils

注:rpm -qf `which dig`,可查询一个命令属于哪个安装包。

 

三、配置

1、添加Mysql密码,配置数据库项

service mysqld start

/usr/bin/mysqladmin -u root password ‘YOUR-PASS’

insert into mysql.user(Host,User,Password) values(“localhost”,”XXX”,password(“YOUR-PASS”));

create database wordpress;
grant all privileges on wordpress.* to wordpress@localhost ;
flush privileges; //这一步记得操作,不然授权不生效。
2、配置httpd
配置虚拟主机:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /YOUR/DIRECTORY/
ServerName whicky.cn
ServerAlias whicky.cn *.whicky.cn
ErrorLog logs/whicky-error_log
CustomLog logs/whicky-access_log common
</VirtualHost>
内存不大,我们需要对线程启动数、最大连接数等做限制,apache默认用的是prefork工作模式,因此修改以下片段:(参考:https://www.cnblogs.com/adforce/archive/2013/10/11/3363148.html)
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 3
ServerLimit 100
MaxClients 30
MaxRequestsPerChild 100
</IfModule>
3、wordpress下载安装
wget https://cn.wordpress.org/wordpress-4.1-zh_CN.tar.gz
移动到上个步骤配置的目录。填写数据库信息,一键安装完成!
建议安装phpMyAdmin。
4、优化
重点讲讲wordpress的优化。
1) google字体替换
 google在国内被墙,页面会因此卡住,选用360的替代方案,如下命令,简单粗暴:
find ./ -print0 |xargs -0 sed -i 's/fonts.googleapis.com/fonts.useso.com/g'
2)选用国内jquery CDN库
分析页面,最大的一个文件是jquery库,如下方案:

1:修改/wp-content/themes/twentyfourteen/header.php,直接引入baidu的jquery库:

<script src=”https://libs.baidu.com/jquery/1.11.1/jquery.js”></script>

2:禁用自带jquery库,但is_admin的时候,不禁用。

修改/wp-includes/script-loader.php,

if(is_admin()){$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.11.1' );}

3)页面文本宽度问题

默认只有474px的大小,浪费了很多空间,可以显示更大的文章,修改如下:

sed -i 's/max-width: 474px;/max-width: auto;/g' css/editor-style.css
sed -i 's/max-width: 474px;/max-width: auto;/g' ./style.css

再手动修改这两个文件中,max-width: 1260px的部分。完成!

4)网站页面静态化(提升速度的另一关键)(参考:https://my.oschina.net/mickelfeng/blog/160992)

<1>确保httpd.conf中全局配置AllowOverride All开启。(我在这步费了很多时间,以为缺省有开)

<2>设置,固态链接,选择一种,推荐友好的数字化显示。

<3>插件中搜索安装 WP super cache,选用mod_rewrite方式,更新,更新.htaccess规则,就自动生成了。保存即可!

5)其他优化

日志:采用详细记录的方式,如下配置:(参考:https://blog.csdn.net/jiary5201314/article/details/41019487)

修改httpd.conf中日志相关段落为:

LogFormat “%h %t %D \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” common

对应记录的内容为:访问者IP,时间,服务器处理时间,请求uri,状态码,大小,Referer,UA

然后就发现时间不对,因为服务器在美国凤凰城,把localtime指向上海,命令:

cd /etc/;mv localtime localtime.bk;

ln -s   /usr/share/zoneinfo/Asia/Shanghai localtime

搞定!

6)插件推荐

wordpress:

hermit,支持虾米音乐和网易音乐的插入,如果直接虾米分享的是swf,在Ios中不支持,优点在此!

perl的安装 :

还在用CPAN来装吗?我晚上想用cpan装了一下LWP::UserAgent,VPS挂了= =!

在网上找到这个包perl-libwww-perl.noarch, yum install就好 ^ ^