为什么http不能访问,https可以访问?

王志勇 发表于 2020年02月11日 21:01

这是不断有人在问的问题,很多时候并非是域名被屏(隔开)蔽了。我在去年7月的时候,购买国内商家的香港VPS,也无意间遇到这个问题。这个原因很简单,不同商家用的相同版本的系统,里面的配置略有不同的原因,比如CentOS 7.X,国外的VPS商,默认80、443端口大多都是开启的。而有些VPS商,CentOS 7.X默认是关闭80端口

如果正好您选择的是CentOS系统,可能会遇到这个问题。如果您选择的是Debian、Ubuntu系统,一般不会遇到这个问题,经过很多测试,任何商家的Debian、Ubuntu系统的80端口几乎都是开启的。开启80端口,CentOS 6和CentOS 7的命令略有不同,当时我测试过所有的CentOS版本。经过很多调试,几个月前已经把这个命令集成在Lampval中。开启80端口的命令如下:

CentOS 7.X:
firewall-cmd --add-service=http --permanent; firewall-cmd --add-port=80/tcp --permanent; firewall-cmd --reload;

CentOS 7.X防报错完整命令:
a1=`firewall-cmd --list-all`; a2=1; a3=1; if [[ $a1 =~ '80' ]]; then a=''; else a2=0; fi; if [[ $a1 =~ 'tcp' ]]; then a=''; else a3=0; fi; if [ $a2 -eq 0 ] || [ $a3 -eq 0 ]; then firewall-cmd --add-service=http --permanent; firewall-cmd --add-port=80/tcp --permanent; firewall-cmd --reload; fi;

CentOS 6.X兼容不同系统的完整命令:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT;
a1='/etc/sysconfig/iptables'; a3=''; if [ -f $a1 ]; then a3='n'; a4='-I INPUT -p tcp --dport 80 -j ACCEPT'; a2=`cat $a1`; if [[ $a2 =~ "$a4" ]]; then a=''; else if [[ $a2 =~ 'COMMIT' ]]; then sed -i 's/COMMIT/'"$a4$a3"'COMMIT/g' $a1; else sed -i '$a'"$a4" $a1; fi; fi; fi;

注:CentOS 7命令比较简单。CentOS 6,上述命令兼容不同版本的系统。有的版本有/sbin/iptables文件,有的版本则放到了/etc/sysconfig/iptables的位置。

上述命令,系统重启后,80端口仍然是开启的。
开启80端口,并不会造成系统不安全,原因如前文

3条评论:
1   执迷不悟 2020-02-11 21:26
有时候还要面临浏览器的歧视,防不甚防。

自由勇 2020-02-11 21:41
是的,好像只有Chrome浏览器率先歧视。

2   阿明 2020-02-14 12:29
学习了

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写