Monthly Archive 二月 2018

By柏小白

慢慢,收集css代码块(持续更新……)

1./*两端对齐 若单行,至少要3个字符,只有两个字符的,中间补一个空格*/
.text_justify {
   text-align: justify; text-justify: distribute-all-lines;/*ie6-8*/
   text-align-last: justify;/* ie9*/
   -moz-text-align-last: justify;/*ff*/
   -webkit-text-align-last: justify;/*chrome 20+*/ }
   @media screen and (-webkit-min-device-pixel-ratio:0) {/* chrome*/
   .aaa:after { content: "."; display: inline-block; width: 100%; overflow: hidden; height: 0; }
}
2./*滚动条*/
#nicescroll1{overflow-y:auto;overflow-x:hidden;height:580px;
scrollbar-arrow-color:#302D30; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#302D30; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
#nicescroll2{overflow-y:auto;overflow-x:hidden;height:396px;
scrollbar-arrow-color:#302D30; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#302D30; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
#commend_list{overflow-y:auto;overflow-x:hidden;height:229px;
scrollbar-arrow-color:#f8f9fb; /*三角箭头的颜色*/
scrollbar-face-color:#000; /*立体滚动条的颜色(包括箭头部分的背景色)*/
scrollbar-3dlight-color:#302D30; /*立体滚动条亮边的颜色*/
scrollbar-highlight-color:#302D30; /*滚动条的高亮颜色(左阴影?)*/
scrollbar-shadow-color:#302D30; /*立体滚动条阴影的颜色*/
scrollbar-darkshadow-color:#302D30; /*立体滚动条外阴影的颜色*/
scrollbar-track-color:#f8f9fb; /*立体滚动条背景颜色*/
scrollbar-base-color:#302D30; /*滚动条的基色*/}
 
3./*chrome滚动条*/
::-webkit-scrollbar-track-piece{
 -webkit-border-radius:0;
}
::-webkit-scrollbar{
 width:8px;
 height:8px;
}
::-webkit-scrollbar-thumb{
 height:50px;
 background-color:#000;
 -webkit-border-radius:4px;
 outline-offset:-2px;
 border: 2px solid #000;
}
::-webkit-scrollbar-thumb:hover{
 height:50px;
 background-color:#000;
 -webkit-border-radius:4px;/*两端对齐 若单行,至少要3个字符,只有两个字符的,中间补一个空格*/
.text_justify {
   text-align: justify; text-justify: distribute-all-lines;/*ie6-8*/ 
   text-align-last: justify;/* ie9*/ 
   -moz-text-align-last: justify;/*ff*/ 
   -webkit-text-align-last: justify;/*chrome 20+*/ }
   @media screen and (-webkit-min-device-pixel-ratio:0) {/* chrome*/
   .aaa:after { content: "."; display: inline-block; width: 100%; overflow: hidden; height: 0; }
}

4./* 实现背景固定的效果 */
.背景图相对于元素固定{
    background-attachment: fixed;
    width: 100%;
    height: 300px;
    background: url(https://s.w.org/images/home/collage-min.jpg?3) center top;
    background-size: cover;
    box-shadow: inset 0 0 8px rgba(0,0,0,.4);
    height: 600px;
    background-attachment: fixed;
    }

 

5. 1px 方案

做过移动端需求的前端肯定是避免不了处理 1px 细线问题,这个问题的原因就是 UI 对页面美观度的要求越来越高(不要和我说这是 retina 屏的问题)。

据小生所知好像没有什么兼容性特别好的方案,这里我只是提供两种种相对较好的方案。

使用伪类 + transform

.border_bottom { 
    overflow: hidden; 
    position: relative; 
    border: none!important; 
}
.border_bottom:after { 
    content: ".";
    position: absolute; 
    left: 0; 
    bottom: 0; 
    width: 100%; 
    height: 1px; 
    background-color: #d4d6d7; 
    -webkit-transform-origin: 0 0;  
    transform-origin: 0 0; 
    -webkit-transform: scaleY(0.5);
    transform: scaleY(0.5);
}

使用 box-shadow 模拟

.border_bottom {
  box-shadow: inset 0px -1px 1px -1px #d4d6d
 
By柏小白

openvpn 快速搭建

By柏小白

SSR搭建

已购买服务器后:
1.安装常用软件
yum install yum install lrzsz tree wget vim gcc gcc-c++ openssl-devel rpm ntpdate nc net-tools iotop cmake -y

2.关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce

3.精简开机自启动服务
chkconfig |egrep -v "ssh|crond|network|rsyslog|sysstat|iptables" |awk '{print "chkconfig" ,$1,"off"}'|bash
chkconfig --list |grep 3:on


7.0 调整字符集,支持中文显示 ###最好不用
\cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak.v1
echo 'LANG=zh_CN.UTF-8' >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo $LANG



10.加大文件描述符

echo '* - nofile 65535' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf


11.内核优化

cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout=2
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_keepalive_time=600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog= 16384
net.ipv4.tcp_max_tw_buckets=36000
net.ipv4.route.gc_timeout=100
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_synack_retries=1
net.core.somaxconn=16384
net.core.netdev_max_backlog=16384
net.ipv4.tcp_max_orphans=16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max=25000000
net.netfilter.nf_conntrack_max=25000000
net.netfilter.nf_conntrack_tcp_timeout_established=180
net.netfilter.nf_conntrack_tcp_timeout_time_wait=120
net.netfilter.nf_conntrack_tcp_timeout_close_wait=60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
EOF

sysctl -p


15.禁止主机被ping
echo "echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all" >> /etc/rc.d/rc.local



一键安装部署:https://github.com/ToyoDAdoubi/doubi#ssrmush 脚本

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh


客户端下载
ShadowsocksR-4.7.0
SSR搭建与加速介绍
2017.11.7
ShadowsocksR一键安装脚本

Shadowsocks
本脚本适用环境:
系统支持:CentOS6+
内存要求:≥128M
日期:2017 年 07 月 27 日

操作前准备:
系统基础优化,:

关闭防火墙

关于本脚本:
一键安装 ShadowsocksR 服务端。
请下载与之配套的客户端程序来连接。
(以下客户端只有 Windows 客户端和 Python 版客户端可以使用 SSR 新特性,其他原版客户端只能以兼容的方式连接 SSR 服务器)

默认配置:
服务器端口:自己设定(如不设定,默认为 8989)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,默认为 aes-256-cfb)
协议(Protocol):自己设定(如不设定,默认为 origin)
混淆(obfs):自己设定(如不设定,默认为 plain)

使用方法:
使用root用户登录,运行以下命令:

wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
chmod +x shadowsocksR.sh
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log
安装完成后,脚本提示如下:

Congratulations, ShadowsocksR server install completed!
Your Server IP :your_server_ip
Your Server Port :your_server_port
Your Password :your_password
Your Protocol :your_protocol
Your obfs :your_obfs
Your Encryption Method:your_encryption_method

Welcome to visit:https://shadowsocks.be/9.html
Enjoy it!

/etc/init.d/shadowsocks status
可以查看 ShadowsocksR 进程是否已经启动。
本脚本安装完成后,已将 ShadowsocksR 自动加入开机自启动。

使用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

配置文件路径:/etc/shadowsocks.json
日志文件路径:/var/log/shadowsocks.log
代码安装目录:/usr/local/shadowsocks

2017 年 07 月 22 日:
1、新增:安装时可选 13 种加密方式的其中之一(none 是不加密)。如下所示:

none
aes-256-cfb
aes-192-cfb
aes-128-cfb
aes-256-cfb8
aes-192-cfb8
aes-128-cfb8
aes-256-ctr
aes-192-ctr
aes-128-ctr
chacha20-ietf
chacha20
rc4-md5
rc4-md5-6
2、新增:安装时可选 7 种协议(protocol)的其中之一。如下所示:

origin
verify_deflate
auth_sha1_v4
auth_sha1_v4_compatible
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b
3、新增:安装时可选 9 种混淆(obfs)的其中之一。如下所示:

plain
http_simple
http_simple_compatible
http_post
http_post_compatible
tls1.2_ticket_auth
tls1.2_ticket_auth_compatible
tls1.2_ticket_fastauth
tls1.2_ticket_fastauth_compatible
2016 年 08 月 13 日:
1、新增多用户配置示例。注意:如果你新增了端口,也要将该端口从防火墙(iptables 或 firewalld)中打开。

一键安装最新内核并开启 BBR 脚本(开启加速)

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh ##重启验证
uname -r
sysctl net.ipv4.tcp_available_congestion_control

加密
工作原理

C->S方向
浏览器请求(socks5协议) -> ssr客户端 -> 协议插件(转为指定协议) -> 加密 -> 混淆插件(转为表面上看起来像http/tls) -> ssr服务端 -> 混淆插件(分离出加密数据) -> 解密 -> 协议插件(转为原协议) -> 转发目标服务器

其中,协议插件主要用于增加数据完整性校验,增强安全性,包长度混淆等,协议插件主要用于伪装为其它协议

客户端

客户端的协议插件暂无配置参数,混淆插件有配置参数,混淆插件列表如下:

plain:不混淆,无参数

http_simple:简易伪装为http get请求,参数为要伪装的域名,如cloudfront.com。仅在C#版客户端上支持用逗号分隔多个域名如a.com,b.net,c.org,连接时会随机使用其中之一。不填写参数时,会使用此节点配置的服务器地址作为参数。

http_post:与http_simple绝大部分相同,区别是使用POST方式发送数据,符合http规范,欺骗性更好,但只有POST请求这种行为容易被统计分析出异常。参数配置与http_simple一样

tls1.2_ticket_auth:伪装为tls请求。参数配置与http_simple一样

其它插件不推荐使用,在这里忽略

客户端的协议插件,仅建议使用origin,verify_sha1,auth_sha1_v2,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,解释如下:
origin:原版协议,为了兼容
verify_sha1:原版OTA协议,为了兼容
auth_sha1_v2:中等安全性,无时间校对的要求,适合路由器或树莓派,混淆强度大
auth_sha1_v4:较高安全性,有宽松的时间校对要求,混淆强度大
auth_aes128_md5或auth_aes128_sha1:最高安全性,有宽松的时间校对要求,计算量相对高一些,混淆强度较大

如不考虑兼容,可无视前两个

服务端

大部分插件都可以通过添加_compatible后缀以表示兼容原版,例如默认的http_simple_compatible或auth_sha1_v4_compatible这样

服务端的协议插件,仅auth_*系列有协议参数,其值为整数。表示允许的同时在线客户端数量,建议最小值为2。默认值64

服务端的混淆插件,http_simple或http_post有混淆参数,用逗号分开若干个host,表示客户端仅能使用以上任一个host连接,而留空表示客户端可以使用任意host。tls1.2_ticket_auth有混淆参数,其值为整数,表示与客户端之间允许的UTC时间差,单位为秒,为0或不填写(默认)表示无视时间差

其它说明参见客户端部分

总结

如不考虑原版的情况下,推荐使用的协议,只有auth_sha1_v4和auth_aes128_md5和auth_aes128_sha1,推荐使用的混淆只有plain,http_simple,http_post,tls1.2_ticket_auth

不要奇怪为什么推荐plain,因为混淆不总是有效果,要看各地区的策略的,有时候不混淆让其看起来像随机数据更好

原文链接:
https://shadowsocks.be/9.html

协议区别:
https://www.zhouxuanyu.com/388.html
By柏小白

自建ss服务器教程

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

对于怎么利用VPS搭建SS网上有很多这方面的教程,百度搜索其实也很好用,只要善于搜索,答案其实都会有的。网上那些搭建SS的教程基本上我也看了个大概,但都不是很详细,本文将从零开始教大家VPS搭建SS,初学者们都能够成功配置SS服务器。

本文搭建SS教程共有三步,只要大家按照教程操作,都能够搭建成功。

一、购买VPS(需国外服务器)

对于国外VPS服务器的选择,目前在国内知名的国外主机商也就两家,分别是搬瓦工和Vultr,搬瓦工搭建SS教程我在前面也详细的介绍过,共有两篇文章讲解搬瓦工搭建SS教程,一篇是自动搭建SS,一篇是手动搭建SS,详情:

今天给大家带来的是利用Vultr(VPS)搭建SS教程,首先我们需要先购买VPS:

Vultr官网:点击进入

如下图,然后在下图处填写注册邮箱和密码(密码第一位要大写,必须包含字母大小写+数字,而且密码不能少于10位,然后点击 “Create Account” 创建账号

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

账号创建完成系统会发送邮件到你的注册邮箱,点击验证

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

验证完成,进行登录

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

登录后如下图

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

在上图服务器一栏选择机房、系统、配置等信息,下图这些非必选项,可以留空不选

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

选择完毕后点击右下角的“Deploy Now”

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

下面是账户充值,支持支付宝充值和微信付款,最低充值10美元

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

充值完毕,VPS基本也就购买完成,点击OS下面的图标就能看到服务器的详细配置信息了

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

下面就是VPS的机房位置、IP、用户名、root密码,这些信息我们搭建SS要用到,所以这个页面暂时不要关闭

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

二、Vultr搭建SS服务器(shadowsocks server)

本文的这一步才是最重要的一步,请大家仔细阅读。

我们先要下载一个远程连接软件:Putty

下载地址:百度网盘

下载、解压、安装,运行Putty,然后填写刚刚购买的Vultr VPS的IP地址,端口默认22,然后点击“Open”

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

下面直接选择“是”

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

在弹出的命令窗口输入用户名 root ,回车,然后输入root密码(注意:输入密码后窗口不会显示出来,但是密码是已经输入了。如果需要粘贴,Putty的快捷粘贴方式为右键单击一次

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

输入密码后回车,直到等到下面出现[root@host ~]#或者[root@vultr ~]#后,全部复制以下代码粘贴回车(Putty的快捷粘贴方式为右键单击一次

wgetno-check-certificate  https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

当出现上图时,请全部复制第二条代码,粘贴回车(Putty的快捷粘贴方式为右键单击一次

chmod +x shadowsocks.sh
Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

出现上图时,继续全部复制第三条代码粘贴回车(Putty的快捷粘贴方式为右键单击一次

./shadowsocks.sh 2>&1 | tee shadowsocks.log
Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

出现下图后输入SS密码-确认SS密码-输入SS端口-确认SS端口

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

下面将选择SS的加密方式,选择“7”回车,或者任意键回车

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

安装SS需要时间,等待几分钟后将会出现下图

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

当出现上图信息时说明SS已经搭建成功,上图被红色涂去的是SS服务器的IP、端口、密码和加密方式。

三、各平台SS本地客户端的使用方法

1、Windows用户SS使用方法

下载Windows版本的SS客户端-shadowsocks-win:百度网盘

下载解压后,打开shadowsocks.exe文件,把上面搭建好的SS信息按照对应的地方填写进去后确定保存

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

然后单击右键-启用系统代理

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

这时打开谷歌看看,是不是已经可以访问了。

2、安卓(Android)手机用户使用方法

shadowsocks安卓(Android)版本下载地址:百度网盘

下载、安装好软件后打开APP,点击右上角+号,选择手动设置。然后填写SS信息,同电脑端一样。

Vultr(VPS)搭建SS服务器图文指导教程 最新完整版

c、iPhone苹果手机用户使用方

苹果(iPhone)用户需要在苹果商店下载相应的APP,国区苹果账号不能够下载,需要美国苹果ID才能下载,美国ID可以自己注册,也可以找万能的TB购买个临时的使用。

好了本次Vultr搭建SS教程已经结束,大家如有不明白的地方可以留言相告。

By柏小白

SHTML 教程

什么是 SHTML

使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。

SSI工作原理:

将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用 SSI 包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI 文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml。

Web 服务器在处理网页的同时处理 SSI 指令。当 Web 服务器遇到 SSI 指令时,直接将包含文件的内容插入 HTML 网页。如果“包含文件”中包含 SSI 指令,则同时插入此文件。除了用于包含文件的基本指令之外,还可以使用 SSI 指令插入文件的相关信息(如文件的大小)或者运行应用程序或 shell 命令。

网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。

所以,利用SHTML格式的页面目的和 ASP 差不多,但是因为是 API 所以运转速度更快,效率更高,比ASP快,比HTML慢,但由于可以使用服务器端包含,因此使页面更新容易(特别是批量更新banner,版权等),想象一下吧,你有一段 HTML,要在中间穿插一些特殊的服务端脚本,比如插入其他 HTML 段落,你选择 ASP 来完成这个任务,但是如果任务更繁重,需要更多的时间,比如 5 s,这个时候你不用 ASP 而用  SHTML,或许处理时间就只用 4s 了。

SSI有什么用?

之所以要扯到 SSI,是因爲 Shtml – Server-Parsed HTML 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。

目前,主要有以下几种用用途:

  1. 显示服务器端环境变量<#echo>
  2. 将文本内容直接插入到文档中<#include>
  3. 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
  4. 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
  5. 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)

高级SSI<XSSI>可设置变量使用if条件语句。

使用SSI

SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:

<!–#include file=”info.htm”–>

就是一条SSI指令,其作用是将”info.htm”的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。

如何在我的WEB服务器上配置SSI功能?

在一些WEB服务器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的文件必须使用已被映射到 SSI 解释程序的扩展名;否则,Web 服务器将不会处理该SSI指令;默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(Ssinc.dll)。
Apache则是根据你的设置情况而定,修改srm.conf如:

AddType text/x-server-parsed-html .shtml 将只对.shtml扩展名的文件解析SSI指令
AddType text/x-server-parsed-html .html 将对所有HTML文档解析SSI指令

Netscape WEB服务器直接使用 Administration Server(管理服务器)可打开SSI功能。
Website 使用 Server Admin 程序中的 Mapping 标签,扩展名添加内容类型为:wwwserver/html-ssi
Cern 服务器不支持SSI,可用SSI诈骗法,到 http://sw.cse.bris.ac.uk/WebTools/fakessi.html 上下载一个PERL脚本,即可使你的CERN服务器使用一些SSI指令。(不支持exec指令。)

SSI指令基本格式

程序代码:

<!– 指令名称=”指令参数”>

示例:

<!–#include file=”info.htm”–>

说明:

  1. <!– –>是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
  2. #include 为SSI指令之一。
  3. file 为include的参数, info.htm为参数值,在本指令中指将要包含的文档名。

注意:

  1. <!–与#号间无空格,只有SSI指令与参数间存在空格。
  2. 上面的标点=””,一个也不能少。
  3. SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

SSI指令使用详解

#echo 示范

作用:将环境变量插入到页面中。

语法:

<!–#echo var=”变量名称”–>

示例:

<!–#echo var=”DOCUMENT_NAME”–> 本文档名称
<!–#echo var=”DATE_LOCAL”–> 现在时间
<!–#echo var=”REMOTE_ADDR”–> 你的IP地址

#include 示范

作用:将文本文件的内容直接插入到文档页面中。

语法:

<!–#include file=”文件名称”–>
<!–#include virtual=”文件名称”–>

file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file=”nav_head.htm”。
virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file=”/hoyi/nav_head.htm”

参数:

file 指定包含文件相对于本文档的位置
virtual 指定相对于服务器文档根目录的位置

注意:

  1. 文件名称必须带有扩展名。
  2. 被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便,微软公司推荐使用 .inc 扩展名(这就看你的爱好了)。

示例:

<!–#include file=”nav_head.htm”–> 将头文件插入到当前页面
<!–#include file=”nav_foot.htm”–> 将尾文件插入到当前页面

#flastmod 和 #fsize 示范

作用:

#flastmod 文件最近更新日期
#fsize 文件的长度

语法:

<!–#flastmod file=”文件名称”–>
<!–#fsize file=”文件名称”–>

参数:

file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档
virtual 指定相对于服务器文档根目录的位置 如 /hoyi/info.txt 表示

注意:文件名称必须带有扩展名。

示例:

<!–#flastmod file=”news.htm”–> 将当前目录下news.htm文件的最近更新日期插插入到当前页面
<!–#fsize file=”news.htm”–> 将当前目录下news.htm的文件大小入到当前页面

#exec 示范

作用:将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。

语法:

<!–#exec cmd=”文件名称”–>
<!–#exec cgi=”文件名称”–>

参数:

cmd 常规应用程序
cgi CGI脚本程序

示例:

<!–#exec cmd=”cat /etc/passwd”–> 将会显示密码文件
<!–#exec cmd=”dir /b”–> 将会显示当前目录下文件列表
<!–#exec cgi=”/cgi-bin/gb.cgi”–> 将会执行CGI程序gb.cgi。
<!–#exec cgi=”/cgi-bin/access_log.cgi”–> 将会执行CGI程序access_log.cgi。

注意:从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。

禁止方法:

  1. Apache,将access.conf中的”Options Includes ExecCGI”这行代码删除;
  2. 在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元数据库;

#config

作用: 指定返回给客户端浏览器的错误信息、日期和文件大小的格式。

语法:

<!–#config errmsg=”自定义错误信息”–>
<!–#config sizefmt=”显示单位”–>
<!–#config timefmt=”显示格式”–>

参数:

errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。
sizefmt 文件大小显示方式,默认为字节方式(“bytes”)可以改为千字节方式(“abbrev”)
timefmt 时间显示方式,最灵活的配置属性。

示例:显示一个不存在文件的大小

<!–#config errmsg=”服务器执行错误,请联系管理员 yiho@126.com,谢谢!”–>
<!–#fsize file=”不存在的文件.htm”–>

以千字节方式显示文件大小

语法:

<!–#config sizefmt=”abbrev”–>
<!–#fsizefile=”news.htm”–>

以特定的时间格式显示时间

<!–#config timefmt=”%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期”–>
<!–#echo var=”DATE_LOCAL”–> 显示今天是星期几,几月,时区
<!–#config timefmt=”今天%A, %B ,服务器时区是 %z,是”–>
<!–#echo var=”DATE_LOCAL”–>

XSSI

XSSI(Extended SSI)是一组高级SSI指令,内置于Apache 1.2或更高版本的mod-include模块之中。其中可利用的的指令有:

#printenv
#set
#if

#printenv

作用: 显示当前存在于WEB服务器环境中的所有环境变量。

语法:

<!–#printenv–>

#set

作用:可给变量赋值,以用于后面的if语句。

语法:

<!–#set var=”变量名” value=”变量值”–>

示例:

<!–#set var=”color” value=”红色”–>

#if

作用:创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。

语法:

<!–#if expr=”$变量名=\”变量值A\””–>
显示内容
<!–#elif expr=”$变量名=\”变量值B\””–>
显示内容
<!–#else–>
显示内容
<!–#endif”–>

示例:

<!–#if expr=”$SERVER_NAME=\”www.baidu.com\””–>
欢迎光临 http://www.baidu.com
<!–#elif expr=”$SERVER_NAME=\”www.google.com\”” –>
欢迎光临 http://www.google.com
<!–#else–>
欢迎光临 Afly’s Blog!
<!–#endif”–>

注意:用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。

1、Config 命令

Config 命令主要用于修改SSI的默认设置。其中:

Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。

<!–#config errmsg=”Error! Please email webmaster@mydomain.com” –>

Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。

<!–#config timefmt=”%A, %B %d, %Y”–>
<!–#echo var=”LAST_MODIFIED” –>

显示结果为:

Wednesday, April 12, 2000

也许用户对上例中所使用的%A %B %d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。

Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为”bytes”;对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。

<!–#config sizefmt=”bytes” –>
<!–#fsize file=”index.html” –>

2、Include 命令

Include 命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!

Include 命令具有两个不同的参数:

Virtual:给出到服务器端某个文档的虚拟路径。
File:给出到当前目录的相对路径,其中不能使用”../”,也不能使用绝对路径。

<!–#include virtual=”/includes/header.html” –>
<!–#include file=”header.html” –> 这就要求每一个目录中都包含一个header.html文件。

3、Echo 命令

Echo 命令可以显示以下各环境变量:

DOCUMENT_NAME:显示当前文档的名称。
DOCUMENT_URI:显示当前文档的虚拟路径。例如:

<!–#echo var=”DOCUMENT_NAME” –>
<!–#echo var=”DOCUMENT_URI” –>

随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:

http://YourDomain<!–#echo var=”DOCUMENT_URI” –>

QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符”\”。例如:

<!–#echo var=”QUERY_STRING_UNESCAPED” –>

DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如:

<!–#config timefmt=”%A, the %d of %B, in the year %Y” –>
<!–#echo var=”DATE_LOCAL” –>

显示结果为:

Saturday, the 15 of April, in the year 2000

DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:

<!–#echo var=”DATE_GMT” –>

LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。

<!–#echo var=”LAST_MODIFIED” –>

CGI环境变量

除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:

SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:
<!–#echo var=”SERVER_SOFTWARE” –>
SERVER_NAME: 显示服务器的主机名称,DNS别名或IP地址。例如:
<!–#echo var=”SERVER_NAME” –>
SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:
<!–#echo var=”SERVER_PROTOCOL” –>
SERVER_PORT:显示服务器的响应端口。例如:
<!–#echo var=”SERVER_PORT” –>
REQUEST_METHOD:显示客户端的文档请求方法,包括GET, HEAD, 和POST。例如:
<!–#echo var=”REQUEST_METHOD” –>
REMOTE_HOST:显示发出请求信息的客户端主机名称。
<!–#echo var=”REMOTE_HOST” –>
REMOTE_ADDR:显示发出请求信息的客户端IP地址。
<!–#echo var=”REMOTE_ADDR” –>
AUTH_TYPE:显示用户身份的验证方法。
<!–#echo var=”AUTH_TYPE” –>
REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。
<!–#echo var=”REMOTE_USER” –>

4、Fsize:显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。

<!–#fsize file=”index_working.html” –>

5、Flastmod:显示指定文件的最后修改日期,可以结合config 命令的timefmt参数控制输出格式。

<!–#config timefmt=”%A, the %d of %B, in the year %Y” –>
<!–#flastmod file=”file.html” –>

这里,我们可以利用flastmod参数显示出一个页面上所有链接页面的更新日期。方法如下:

<!–#config timefmt=” %B %d, %Y” –>
<A HREF=”/directory/file.html”>File</A>
<!–#flastmod virtual=”/directory/file.html” –>
<A HREF=”/another_directory/another_file.html”>Another File</A>
<!–#flastmod virtual=”/another_directory/another_file.html” –>

显示结果为:

File April 19, 2000
Another File January 08, 2000

6、Exec

Exec命令可以执行CGI脚本或者shell命令。使用方法如下:

Cmd:使用/bin/sh执行指定的字串。如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。
Cgi:可以用来执行CGI脚本。例如,下面这个例子中使用服务端cgi-bin目录下的counter.pl脚本程序在每个页面放置一个计数器:

<!–#exec cgi=”/cgi-bin/counter.pl” –>

关于SHTML和HTML的区别

让我们先来看看SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml是服务器动态产成的html.

虽然两者都是超文本格式,但shtml是一种用于SSI技术的文件。也就是Server Side Include–SSI 服务器端包含指令。如果Web Server有SSI功能的话,大多数(尤其是基于Unix平台)的WEB服务器,如Netscape Enterprise Server等均支持SSI命令。

By柏小白

WebStorm设置shtml测试服务器-局域网内其他设备访问

一、WebStorm配置版本:
63001655-7A67-4e20-B5D3-85D86B9AA309
步骤:
1. “File” -> “Settings…”, 打开设置界面
2. 选中”Debugger”【调试程序】, Port输入”9090″, “Allow unsigned requests”选中, 打钩
2
3. 选中”Deployment”, 点击”+”, Name置为”Localhost”, Type选择为”Local or mounted folder”
3
4. 设置”Connection”, 设置Folder, 我自己的项目文件是在”E:\Work_V1_B\branch\dggschoo\04_Coding\WebSites\Dgg.Web.Static”下,  Web server root URL设置为”http://172.16.3.135:9090″, IP是自己电脑的
4
注:
Web server root URL: http://172.16.3.135:9090, 点击界面里的浏览器, 自动打开的地址如下:
http://172.16.3.135:9090/index.html
上面的地址是打不开的, 因为我是放在Dgg.Web.Static文件下的,
所以应修改成 Web server root URL: http://172.16.3.135:9090/Dgg.Web.Static
OK 能正常访问了
5
5. “Mappings”下保持不变, 点击”OK”, 即可
7

6. OK,设置完成,现在用webstorm直接页面预览,可以看到页面地址

已经由原先的:http://localhost:63342/****.html
更改为现在的:http://172.16.3.135:9090/****.html
直接复制这个路径给你的小伙伴吧,只要他们的设备和你的电脑保持在同局域网,即可打开预览了.

二、在nginx下配置:

nginx服务器,如何支持ssi包含文件。

主要是三个参数,ssi,ssi_silent_errors和ssi_types,均可以放在http,server和location的作用域下。

ssi on
开启ssi支持,默认是off

ssi_silent_errors on
默认值是off,开启后在处理SSI文件出错时不输出错误提示:”[an error occurred while processing the directive] ”

ssi_types
默认是ssi_types text/html,所以如果需要htm和html支持,则不需要设置这句,如果需要shtml支持,则需要设置:ssi_types text/shtml

SSI的格式:
<!–#include file=”bottom.htm”–>

<!–#include virtual=”/hx/bottom.htm”–>
路径是相对server中root根目录。

更多请参见官方文档:http://wiki.nginx.org/NginxChsHttpSsiModule

示例:

 

server {
    listen       1212;
    server_name  172.16.3.135;

    ssi on;
    ssi_silent_errors on;
    ssi_types text/shtml;

    root   "E:/Work_V1_B/branch/dggschoo/04_Coding/WebSites/Dgg.Web.Static/";

    location / {
        index  index.html index.htm index.shtml;
    }
}