Chrome 49低版本或者其他浏览器访问HTTP2网站出现ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

问题跟我想的一样,是因为加密的方式被拒绝导致的

解决方式,在nginx.conf中设置

这个是CloudFlare 使用的配置

参考下面的文章

https://imququ.com/post/why-tls-handshake-failed-with-http2-enabled.html

Ubuntu通过gitolite快速部署git server并开启master分支网站代码自动部署

安装git和gitolite

首先,通过下面的命令安装git和gitolite

添加git用户组

配置密钥

接下来在本地机器生成ssh密钥,使用下面的命令

当然,如果你想为你的gitolite分配单独的密钥,可以使用下面的命令(生成名为git-admin的密钥)

如果你使用了单独分配的密钥,你需要配置你的git在连接指定域名时使用不同的密钥,比如我们这里gitolite的管理域名是 admin.xxx.com 。我们在刚才的.ssh文件夹新建 config 文件(没有扩展名),内容如下

这样就可以在连接admin.xxx.com的时候使用git-admin这组密钥了

初始化gitolite

下一步,将你的ssh公钥上传到服务器的某个位置,比如 /tmp/git-admin.pub

然后切换到git用户,使用这个公钥初始化gitolite

然后在持有私钥的机器管理gitolite即可,下面是clone命令,注意修改ip地址

关于gitolite的官方文档在这里:http://gitolite.com/gitolite/gitolite.html

自动部署

然后关于配置自动部署,首先我需要部署的网站目录权限为 www-data:www-data

我把git用户添加到了www-data组中,通过后面权限设置为770保证网站和git都有足够的权限操作文件。使用下面的命令

然后网站目录,比如创建 /home/nginx/xxx ,我们要把这个目录的用户组改成www-data并给予770权限,这样以后我们的git用户才能操作

然后我们切换到git用户,在 /home/nginx/xxx 目录克隆本地库,使用下面的命令。注意clone后面最后有一个参数 .

这样网站目录就初始化完成了,我们继续下面的操作(还是git用户的身份)

钩子文件创建在项目库的hooks文件夹 ~/repositories/xxx.git/hooks ,新建 post-receive 文件,复制粘贴下面的内容,最后别忘了给予本脚本执行权限。就可以退出git用户身份了

解释一下:

首先我们循环读取所有push的请求,当发现是push到master(也就是我们的部署分支)时,触发部署脚本,首先要清楚GIT_DIR环境变量,这样才能切换工作目录。然后我们切换到nginx的网站目录,使用 git add -A && git fetch origin && git reset --hard origin/master 强制清除本地变化并更新到远程master分支。如果有网站自动生成的文件(比如用户上传的附件目录)不想被清空的,别忘了要写在 .gitignore 文件里。当然网站生成的文件请确保权限在770以上,否则可能会导致git无权操作。在更新完远程master分支的代码后,更新文件权限为770,并将所有者改成www-data组(chmod使用末尾的*可以确保不会修改网站目录下.git这个隐藏目录内部的权限,同时-f用来屏蔽错误信息)

 

在编写本篇文章的时候感谢下面这位非常热心的博主解答我好多问题
https://argcv.com/articles/2078.c

Nginx对新版本PHP7.0.11关于PATH_INFO问题的修正

从这个版本以后,使用下面的配置使得Nginx支持ThinkPHP

 

Ubuntu 配置Node.js+Nginx+PHP+MySQL最新版本

配置环境

nginx.conf配置

默认服务器,ip返回403配置

fastcgi_params限制PHP脚本执行目录

纯静态配置

PHP一般通用配置

开启fix_pathinfo(一般默认已开启)

PHP通用框架配置

SSL+HTTP2的PHP框架配置

 

Nginx开启Gzip

操作方法

打开nginx,conf,在 http { 内添加如下内容

参数讲解

gzip

决定是否开启gzip模块
Param: on|off
Example: gzip on; 

gzip_buffers

设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间
Param1: int
Param2: int(k) 后面单位是k
Example: gzip_buffers 4 8k;

gzip_comp_level

设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
Param: 1-9
Example: gzip_com_level 1; 

gzip_min_length

当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩
Param: int
Example: gzip_min_length 1000; 

gzip_http_version

用于识别http协议的版本,早期的浏览器不支持gzip压缩,用户会看到乱码,所以为了支持前期版本加了此选项,目前此项基本可以忽略
Param: 1.0|1.1
Example: gzip_http_version 1.0 

gzip_proxied

Nginx做为反向代理的时候启用,

gzip_types

设置需要压缩的MIME类型,非设置值不进行压缩

在Nginx下新建虚拟主机搭建wordpress(新手向)

搭建环境:

Nginx-1.8.0,安装目录: /usr/local/nginx

PHP-7.0,虚拟主机目录在 /home/vhosts/

下载wordpress,建立虚拟主机目录

首先,我们进入虚拟主机目录,新建一个wordpress目录,下载wordpress并解压

然后我们把wordpress解压文件夹里面的文件移动到外面来,删除刚才下载的压缩包和wordpress-4.4-zh_CN.zip

然后我们把wordpress文件夹的权限和所有者更改一下(当前目录还为 /home/vhosts/wordpress )

这里演示的是Nginxphp-fpm的用户和用户组均为nginx

配置虚拟主机

然后,我们到Nginx的安装目录,到你虚拟主机的配置文件目录中增加一份配置(这里我新建了一个专门的目录来放虚拟主机配置文件,在 /usr/local/nginx/vhosts 下)

把下面的配置文件内容粘贴进去(用Windows的注意下回车和编码)

注意,其中的root目录为你wordpress虚拟主机的目录

server_name为监听的域名,这里用www.yourdomain.com做演示

接着按下Esc,输入 :wq 退出vi

MySQL配置

然后我们进入mysql

输入你的密码之后,创建wordpress数据库

接着创建一个wordpress数据库的帐号,账号名为wp,密码为123456(修改成你自己的)

完成

然后我们重载入nginx

现在,访问www.yourdomain.com,用刚才创建的数据库用户名和密码安装wordpress吧

Let’s Encrypt在XP下的支持问题

目前Let’s Encrypt在Windows XP下总共遇到了两种问题

第一种是因为不支持SNI,SNI允许HTTPS在握手的时候发送主机名,从而使得每个虚拟主机可以根据域名配置不同的证书,如下图所示

QQ图片20151222224447 - 副本 QQ图片20151222224452 - 副本

第二种,可能是因为交叉信任的原因,导致的是证书不信任,但是名称正确

QQ图片20151222224458

总之,还是淘汰XP系统吧