Nginx default server配置

NGINX的配置还是比较晦涩的。尽管我的网站都是静态的,还是有个难题:Default Server的配置。查过很多资料,自己也琢磨了好久,还是没有弄清楚。今天下决心 重新试验了一下,终于有了一个接近完美的解决方案。

问题

这里说的NGINX,主要是作为静态网页作为服务内容的网站。由于我在一个VPS上同时Host了几个网站,又要支持HTTPS,这就引起了这个Default Server配置的问题。

具体的要求是:

  • NGINX支持SNI;
  • HTTP转向到HTTPS;
  • www转向裸域;
  • 屏蔽IP地址访问。如果没有Default Server,使用IP地址访问网站,NGINX会返回它服务器列表里的第一个。

经过一段时间的研究,我发现这两个文章解决了大部分问题:

当然这里说的都是单向的SSL,如果你的服务器打算支持双向SSL,可以看这个文章: USING NGINX AND CLIENT CERTIFICATES? DON’T LET NON-SNI BITE YOU!.

NGINX配置

不废话了,直接给出配置:

假设有两个网站:example-a.com, example-b.com.

nginx.conf

http{
    ......

    server{
    listen *:80 default_server;
    listen [::]:80 default_server ipv6only=on;
    listen *:443 default_server ssl;
    listen [::]:443 default_server ssl ipv6only=on;

    ssl_certificate      /wwwroot/ssl/default/default.crt;
    ssl_certificate_key  /wwwroot/ssl/default/default.key;

    server_name _;

    access_log  /wwwroot/wwwlogs/default.access.log combined;

    return 444;
    }

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

几点说明:

  • return 444 比较关键,最好别换成别的;
  • 也可以把default server配置写在文件里,不过就需要像文章说的那样,文件名之前加上00,来保证最先加载;
  • 自签名证书不可少;

Demo

HTTP(80端口)直接访问IP效果

 

HTTPS访问效果

延伸

如果服务器再加上禁止Ping,那这台服务器基本以“宕机”的效果呈现了。我们以CenteOS为例设置服务器禁Ping配置。

在 /etc/sysctl.conf中增加一行

net.ipv4.icmp_echo_ignore_all=1

如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。

修改完成后执行 sysctl -p 命令使新配置生效。

感谢

转自:https://feelapi.com/website/NGINX-Default-Server.html

Sublime Text 3常用技巧

Sublime Text具有漂亮的用户界面和强大的功能,其实好用才是硬道理。

1、安装

Sublime Text 是一个跨平台的编辑器,就平台版本而言,它可以支持OS X、Windows、Linux、Windows下还区分32位和64位程序,并支持安装版和绿色版可供选择下载。

限于篇幅,我在这里主要讲Windows下面的安装,目前我所使用Sublime Text3(3114)版本,你可以点我下载32bit64bit

因为上面提供的两种版本我均推荐大家使用安装版本,所以大家在安装的时候应该没有什么问题,很方便的一键安装,安装完成后试着打开一下Sublime Text看看。sublime未注册

你应该和我发现了,sublime还未注册,这是因为sublime是收费软件,并不是免费的。当然像博主这么smart的人,当然也懂得如何激活它(但这不是我的本意,希望大家能够在自己的能力范围里面最好购买它的商业授权价格:$70大约468RMB)。

我先发一串激活的License

—– BEGIN LICENSE —–
Michael Barnes
Single User License
EA7E-821385
8A353C41 872A0D5C DF9B2950 AFF6F667
C458EA6D 8EA3C286 98D1D650 131A97AB
AA919AEC EF20E143 B361B1E7 4C8B7F04
B085E65E 2F5F5360 8489D422 FB8FC1AA
93F6323C FD7F7544 3F39C318 D95E6480
FCCC7561 8A4A1741 68FA4223 ADCEDE07
200C25BE DBBC4855 C4CFB774 C5EC138C
0FEC1CEF D9DCECEC D3A5DAD1 01316C36
—— END LICENSE ——

好了,就帮你到这里了,具体的自己查看如何使用了吧。

2、安装Package Control

在安装Package Control之前我得先啰嗦一句你必须是成功安装好了Sublime Text 3,Package Control 插件是一个方便 Sublime text 管理插件的插件,由于我们所处的网络环境问题,一般使用联机下载安装通常是比较困难的,所以我在这里推荐大家使用离线下载(或称它为手工安装吧)。

  • 打开菜单栏的 Preferences > Browse Packages…
  • 返回上层目录,找到 Installed Packages 文件夹
  • 这个文件(Package Control.sublime-package)复制到 Installed Packages
  • 重启Sublime Text

你现在应该可以看到Package Control 菜单了。

Package Control Menu

我们可以在Package Control搜索自己将要安装的任何插件,但是在我们目前的网络环境下,通常情况下是无法自动安装的,所以手工安装插件的学习是尤为必要的,下面我来为大家介绍几款我常用的插件。

3、Sublime Text插件

  • HTML+CSS+JavaScript格式化代码插件(Sublime-HTMLPrettify)

Github地址:https://github.com/victorporof/Sublime-HTMLPrettify(不能打开是你的网络问题)

这是一个Sublime Text 2和3的插件,让你能够快速、方便格式化你的HTML,CSS,JavaScript和JSON代码。这个插件前提条件还需要依赖Node.js程序,所以我们得先要安装Node.js程序,下载地址在这里https://nodejs.org/en/download/,根据你的Windows版本进行选择,我在这里建议大家下载Windows Binary (.exe)的32bit64bit

下载完node.exe将它放在C:\Program Files下就可以了(其实可以随便放的,但是不推荐),Nodejs处理完毕,我们就开始下载Sublime-HTMLPrettify插件,如果github无法打开请到这里下载http://cdn.markdream.com/ref/packages/dev/Sublime/pack/Sublime-HTMLPrettify-master.zip

复制文件

下载完毕后,解压。打开Sublime Text3 > 打开菜单栏的 Preferences > Browse Packages…将你解压出来的 Sublime-HTMLPrettify-master 文件夹(是整个文件夹)复制到这里即可,重启Sublime Text。

你可以看到HTML/CSS/JS Preffity就表示你安装成功。Prettify

设置Nodejs程序的路径

打开Sublime Text3 > 打开菜单栏的 Preferences > HTML/CSS/JS Preffity > Set ‘node’ Path

“node_path”: {
“windows”: “C:/Program Files/node.exe”,
……
},

根据你自己的情况进行修改就可以了。具体的使用帮助请参见https://github.com/victorporof/Sublime-HTMLPrettify

  • Emmet

Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生。它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度。

Github地址:https://github.com/sergeche/emmet-sublime

本站下载:http://cdn.markdream.com/ref/packages/dev/Sublime/pack/emmet-sublime-master.zip

在使用这个插件之前需要下载PyV8,Windows下你可以下载32bit64bit。(注意下载下来的文件,解压出来自己新增一个PyV8文件夹,下面包含pyv8-win64-p3或pyv8-win32-p3),正确的路径应该是这样的..\Sublime Text 3\Packages\PyV8\pyv8-win64-p3(或)pyv8-win32-p3。

将下载的文件通通解压,然后拷贝到Preferences > Browse Packages… 文件夹中即可,重启Sublime Text即可。

Emmet使用参考:http://docs.emmet.io/

4、结语

在我的日常开发环境中,ST3与那些半自动化生产工具(DW)完全不在一个水平线上,无论是启动速度,还是插件资源都是其他软件无法比拟的。最最重要的还是好用、跨平台、全能型编辑器。

 

centos安装shadowsocks-libev

其实有很多可以说的,但我不说,直接上过程。

一、shadowsocks-libev安装


$ cd /home/markdream
$ git clone https://github.com/shadowsocks/shadowsocks-libev.git
$ cd shadowsocks-libev
$ sudo apt-get install build-essential autoconf libtool libssl-dev
$ ./configure 
$ make
$ make install

二、shadowsocks-libev的设置

通过上面的安装,你先可以对shadowsocks-libev进行配置了。


$ cd /home/markdream/shadowsocks/shadowsocks-libev/src #总之就是进入你刚刚下载的源码目录下面的src路径
$ vi config.json

在这个config.json里面写入这些东西


{
    "server":"110.11.1.1",
    "server_port":8388,
    "password":"yourpassword",
    "timeout":600,
    "method":"aes-256-cfb"
}

server里面的改成你的服务器IP地址、server_port改成你想设置的端口建议30000+,密码不说了,其他两个配置看个人需要,好了到这里就设置完成了。

三、shadowsocks-libev的启动

启动参数很简单,继续回到我们的src目录(/home/markdream/shadowsocks-libev/src)大概在这里的位置,请各位同学根据你自己的环境整理。

$ ./ss-server -c config.json -d 114.114.114.114

注意你的config.json的路径哦,不出什么疑问的话,你可以出现我现在这样的界面,那就证明你ok了。

ss

附带一个后台运行的命令

$nohup ./ss-server -c config.json -d 114.114.114.114

Yeah,你完成了SS服务器的配置,你可以用你的客户端连接工具来进行连接测试吧。

ss-client

centos用户登录提示:-bash: /dev/null: Permission denied解决方法

昨天测试了一下“mv xxxx.zip  /dev/null”之后,今天发现使用普通用户ssh登录到系统后出现了四条告警信息。

-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied

出现这个权限问题,也会导致“ll”命令无效,既然是权限问题,我们切换成root用户进去设置它的权限吧。

su root
chmod 777 /dev/null

设置完毕后,退出root用户,再重新连接即可。

 

MySQL备份数据到本地脚本

几年前写过一篇MySQL数据备份数据库的文章,今天我写这个是专门备份到本地的shell脚本,功能简单,和之前的shell脚本有所不同的是,在本次脚本中支持多个数据库备份,无需为每个数据库再定义一个shell备份脚本了。

Shell

#!/bin/sh 
#backup for mysql to local
#author jxcent@gmail.com 2015年10月27日 17:02:47


#备份到本地路径
xBackupPath=/home/databackup/
#mysqldump路径
xMysqlPath=/opt/mysql/bin/mysqldump
#数据库列表
xDBNameList=(wpx)

xArrayLength=${#xDBNameList[@]}

for (( i=0; i<${xArrayLength}; i++ )) ; do 

 xDateTime=`date +%Y%m%d%H%M%S` 

 ${xMysqlPath} ${xDBNameList[$i]} | gzip > ${xBackupPath}"/"${xDBNameList[$i]}"_"${xDateTime}".gz"

done

echo ${xArrayLength} 'DB backup complete!'

如何使用

cd /root
vi databackup.sh
#复制脚本内容到databackup.sh文件中,根据配置文件内的提示按照个人实际需求进行修改
#需要修改的地方有xBackupPath  xMysqlPath xDBNameList
#其中xDBNameList里面是数据库名中间以空格分隔开即可

#设置权限
chmod 700 databackup.sh
chown root:root databackup.sh

#运行测试
/root/databackup.sh

#如果出现无法连接数据库的错误提示,请按照要求创建一个root@localhost用户,且密码为空

文件生成命名规则为“数据库名_生成日期.gz”,例如“test_201510271722.gz”,欢迎拍砖!

Linux删除文件实现回收站功能

从事过服务器维护的人都知道rm、rm -rf 的厉害,执行起来一点也不马虎,有点六亲不认的感觉。刚开始我也没觉得rm的厉害,经过昨天rm掉我几天的工作量,我才发现rm就是一把双刃剑,幸好我的服务器有打快照,让我只损失了一天的工作量。

通过亲身体会到了rm的厉害,我不得不在以后的Linux维护甚至是生产环境中不得不加上回收站了,希望各位童鞋也能和我一样保持一种有回收站的习惯,切不可因为自己很仔细,抱着侥幸心理,“常在河边走哪有不湿鞋”。

好了,开始我们的创建回收站之路吧。

开始

首先在自己家的目录创建一个文件夹用来保存删除的文件

mkdir -p ~/.Trash

修改.bashrc文件

vi ~/.bashrc

在.bashrc文件后面添加下面这些


alias rm=trash        
alias rl='ls ~/.Trash'  
alias ur=undelfile  
undelfile()  
{  
  mv -i ~/.Trash/$@ ./  
}  
trash()  
{  
  mv $@ ~/.Trash/  
}
cleartrash()  
{  
    read -p "Clear trash?[n]" confirm  
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /usr/bin/rm -rf ~/.Trash/*  
}

添加完毕后保存,执行source命令生效

source ~/.bashrc

使用

你现在可以使用rm(删除),ur(撤销),rl(列出回收站),cleartrash(清空回收站)命令了。

#删除一个文件夹,helloworld下面的文件均被移到回收站中
$rm helloworld

#删除一个文件
$rm abc.txt

#撤销abc.txt
$ur abc.txt

#撤销helloworld文件夹
$ur helloworld

#列出回收站
$rl

#清空回收站
cleartrash

好了,重在实践,这是一个很重要的配置,很重要很重要,希望大家不要像我被经历过才来做这件事情,不然有时候真的是欲哭无泪。