前几天在一个站点下防止.htaccess配置文件,后发现所有文件都提示403错误了,查了下资料应该跟options +followsymlinks有关系。
解决方法是在.htaccess文件头部添加: Options +FollowSymlinks
前几天在一个站点下防止.htaccess配置文件,后发现所有文件都提示403错误了,查了下资料应该跟options +followsymlinks有关系。
解决方法是在.htaccess文件头部添加: Options +FollowSymlinks
只需要在web.config配置文件中增加customErrors属性即可,error.htm就是你要显示的友好页面
<system.web>
<customErrors mode="On" defaultRedirect="error.htm"/>
</system.web>
discuz中的变量$_G[‘siteurl’]设置了站点路径,为了兼容http及https同时访问,可以修改
source/class/discuz/discuz_application.php 文件
原始代码:$_G['isHTTPS'] = ($_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
替换为:$_G['isHTTPS'] = ($_SERVER['SERVER_PORT'] == 443 || $_SERVER['HTTPS'] && strtolower($_SERVER['HTTPS']) != 'off') ? true : false;
即可解决
最近某个搜索引擎对网站一个目录的抓取特别频繁,而这个目录是动态页面,比较耗资源,于是测试了下rewrite,写了个规则,测试可以屏蔽,规则如下:
<rewrite>
<rules>
<rule name="屏蔽规则" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_USER_AGENT}" pattern="(^$|xxxSpider)" />
<add input="{URL}" pattern="^.*/abc/.*" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</rules>
</rewrite>
上边的xxxSpider就是你要屏蔽的ua,如果是多个可以用|分割,下边的/abc/就是你要屏蔽的目录,这下可以高枕无忧了。
原因
Android/iOS 自带的 SSL 证书可能漏了证书链里面的某一个证书(中间证书),只要在最终使用的 *.crt 证书文件里面把证书链补充完整就可以解决问题
解决方法
COMODO 申请证书成功之后,下载到的 *.zip 压缩包里面有好几个文件:
AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt
www_yourdomain_com.crt
注:这是证书链的顺序,其中 AddTrustExternalCARoot.crt 是根证书(ROOT CA Certificate)文件,COMODORSAAddTrustCA.crt 和 COMODORSADomainValidationSecureServerCA.crt 是中间证书(Intermediate CA Certificate)文件,www_yourdomain_com.crt 是站点 SSL 证书文件
只要按照如下顺序把这些文件的内容拼接在一起组成一个新的 *.crt 证书文件再使用就可以了:
www_yourdomain_com.crt
COMODORSADomainValidationSecureServerCA.crt
COMODORSAAddTrustCA.crt
AddTrustExternalCARoot.crt
注:就是按照和证书链刚好相反的顺序拼在一起,最终得到的证书内容大致如下:
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
保存为新文件 new_name.crt 再使用就可以解决
下面是hyper-v共享IP端口映射一些常用命令
共享IP端口映射一些常用命令
一、查询端口映射情况
netsh interface portproxy show v4tov4
查询这个IP所有的端口映射。
netsh interface portproxy show v4tov4|find “192.168.1.1”
二、增加一个端口映射
netsh interface portproxy add v4tov4 listenport=外网端口 listenaddress=主IP connectaddress=私网IP connectport=私网IP端口
例如:
netsh interface portproxy add v4tov4 listenport=8888 listenaddress=192.168.1.55 connectaddress=192.168.8.10 connectport=3389
三、删除一个端口映射
netsh interface portproxy delete v4tov4 listenaddress=主IP listenport=外网端口
Hyper-V虚拟机端口映射,实现从外网远程访问内网虚拟机,只需要用管理员身份运行powershell执行映射命令即可。(别忘了打开防火墙相应端口哦)
wordpress后台设置吧http改成https地址后,发现后台无法访问了,前台css也加载不全,解决方法如下:
打开wp-config.php这个文件中,添加如下代码:
$_SERVER[‘HTTPS’] = ‘on’;
define(‘FORCE_SSL_LOGIN’, true);
define(‘FORCE_SSL_ADMIN’, true);
nginx+php-fpm有时候会提示Nginx 502 Bad Gateway,并且不会自动恢复
不过可以写个脚本检测服务状态,发现异常,自动重启。
自动重启脚本:
<?php
$url = ‘http://www.duzhi.net’;
$cmd = ‘/etc/init.d/php-fpm restart’;
for($i = 0; $i < 5; $i ++){
$exec = “curl connect-timeout 3 -I $url 2>/dev/null”;
$res = shell_exec($exec);
if(stripos($res, ‘502 Bad Gateway’) !== false){
shell_exec($cmd);
exit();
}
}
?>
把以上代码保存成nginx502.php,然后添加定时任务,每分钟执行一次。
定时任务代码如下
*/1 * * * * /usr/bin/php /root/crontab/nginx502.php
小插曲:如果执行后php报错:Warning: shell_exec() has been disabled for security reasons in ……
说明你的php不支持shell_exec(),只需要修改php.ini打开这个功能即可。
一个朋友说他服务器无法ping任何域名了,外网是好的,也能ping通,具体什么问题呢
看了下没设置dns,于是编辑了/etc/resolv.conf
系统提示:chmod: changing permissions of ‘/etc/resolv.conf’: Read-only file system
看了下他/分区所有文件都是只读状态,于是:
mount -o remount -rw /
问题解决了
参考资料:重新挂载为已经挂载了的文件系统(以读写权限挂载),需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空。一般用于此目录下的文件为ro权限,需要临时变更为可修改权限。
参数:
-o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user/nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统
IIS站点网站已经全站http跳转https了,但业务上有些后缀文件还需要http访问的办法
由于rewrite规则是从前到后执行的,思路就是在跳转https之前加一条规则终止执行任何规则即可。具体代码如下(红色部分):
<rewrite>
<rules>
<rule name=”ignore xml” stopProcessing=”true”>
<match url=”(.*.xml)” />
<action type=”None” />
</rule>
<rule name=”HTTP to HTTPS redirect” patternSyntax=”ECMAScript” stopProcessing=”true”>
<match url=”(.*)” negate=”false” />
<conditions>
<add input=”{HTTPS}” pattern=”^OFF$” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
测试完美解决了业务上的需求