这样配置可以禁止IP直接HTTP/HTTPS访问,也使未绑定的域名无法访问。

#http
server 
{
  listen 80 default_server;
  server_name _;
  return 500;
}

#https
server 
{
  listen 443 ssl default_server;
  server_name _;
  ssl_certificate      /yourpath/ssl.crt;
  ssl_certificate_key  /yourpath/ssl.key;
  return 500;
}

需要配置秘钥 否则会到时全[......]

Read more

禁用 SSLv3 协议

Google 的一个员工发现了 SSLv3 协议中一个名叫 Poodle 的漏洞,被证实为可以窃取加密的部分信息。这是一个协议层的漏洞,因此无法打补丁。

# nginx.conf

http {
...

ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES2[......]

Read more

linux 添加开机启动项的三种方法。

  1. 编辑文件 /etc/rc.local

    输入命令:vim /etc/rc.local 将出现类似如下的文本片段:

    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    
    touch /var/lock/subsys/local[......]

Read more

字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。

由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是6[......]

Read more

在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不过很多人没有意识到 SETNX 有陷阱!

比如说:某个查询数据库的接口,因为调用量比较大,所以加了缓存,并设定缓存过期后刷新,问题是当并发量比较大的时候,如果没有锁机制,那么缓存过期的瞬间,大量并发请求会穿透缓存直接查询数据库,造成雪崩效应,如果有锁机制,那么就可以控制只有一个请求去更新缓存,其它的请求视情况要么等待,要么使用过期的缓存。

下面以目前 PHP 社区里最流行的 PHPRedis 扩展为例,实现一段演示代码:

<?php
$ok[......]

Read more

模式切换

当前模式
切换为
按键
说明
其它模式
普通模式
Esc

普通模式
插入模式
i
在光标前插入

I
在行首插入

a
在光标后插入

A
在行末插入

o
在当前行之下新建行

O
在当前行之上新建行

r
替换当前字符

R
从当前字符开始替换
普通模式
命令模式
:

普通模式
可视模式
v
可视模式

V
可视行模式

Ctrl+v
可视块模式

移动

在普通模式中,您可以使用以下方式移动[......]

Read more

在前面的标准编译安装中,第一步是./configure,它会根据Makefile.in生成Makefile文件,然后make根据Makefile自动编译软件

通常在一个源码包中,已经包含了configure脚本和Makefile文件,作为课外知识,我们大致了解一下怎么生成这两个文件

autoconf

autoconf用来生成configure脚本,它可以检查系统特性、编译环境、环境变量、软件参数、依赖关系等

autoconf需要用到 m4

  1. 用autoscan描源代码目录生成configure.scan文件
  2. 将configure.scan改名为configure.in
  3. 用aclocal[......]

Read more

https简介

http(Hyper Text Transfer Protocol)超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,它是TCP/IP的上层协议,同时它也是万维网(万维网不等同于互联网,它只是基于互联网的一个服务)的数据通信的基础.

http协议是客户端浏览器与其他程序或Web服务器之间交互的应用层通讯协议.但它也有一个致命的缺点:http协议是明文传输协议,在传输信息的过程中并没有进行任何加密,通信的双方也没有任何的认证,这是非常不安全的,如果在通信过程中被中间人进行劫持、监听、篡改,会造成个人隐私泄露等严重的安全问题.

https就是用于解决这样的安[......]

Read more

mailx安装,很简单!貌似我的系统自带的。

yum install mailx #安装
yum remove mailx #卸载系统自带的旧版mailx

编译安装mailx:
http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2
tar jxvf mailx-12.4.tar.bz2 #解压
cd mailx-12.4 #进入目录
make #编译
make install UCBINSTALL=/usr/bin/install #安装
ln -s /usr/local[......]

Read more

问题

服务器环境为CentOS,php-fpm,使用curl一个https站时失败,打开curl_error,捕获错误:Problem with reading the SSL CA cert (path? access rights?)

解决方案:

  1. sudo yum install ca-certificates (无论有没有,安装确认一下)
  2. 重启php-fpm,这步比较重要,更改底层的东西时一定要重启一下
  3. curl时设置:curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0)

相关知识点

什么是CA Certificates?

Certificat[......]

Read more