放在国外服务器的公司英文网站,做外贸用,主要宣传和推广公司产品。近期突然出现在国内部分地区无法访问,报错ERR_CONNECTION_RESET,而国外访问正常或者通过海外代理也可以访问,只是国内部分地区或者部分网络无法访问,使用代理又可以访问,也能ping通,这是域名被 墙了。域名被封后没有查询和申诉渠道,虽然此时域名解析正常,但访问会被连接重置,直接导致在国内或部分地区无法访问网站。
只有将网站解析到国内服务器,同时对网站备案,才能解决该问题,但是这样就无法保证国外客户的访问质量和速度了(这将会严重影响到外贸网站的宣传推广)。怎样才能同时保证国内和海外的访问呢。
或者为了提高放在国外服务器的外贸网站访问速度(一般做外贸推广、电商公司经常用到),也可以使用以下方法解决。
一般做电商和内外贸的公司,都有两台服务器,一台国内服务器用于宣传中文网站,一台国外服务器放英文网站用于推广外贸业务。为了提高国内访问英文网站的速度和避免国内访问被 墙的问题。我们可以利用内贸服务器做反向代理+缓存的方式,再加上智能云解析,国内将英文网站解析到国内服务器,国外将英文网站解析到国外服务器。
mod_proxy.so
mod_proxy_http.so
mod_proxy_connect.so
mod_cache.so
mod_disk_cache.so
<VirtualHost *:80>
ServerName www.bluepost.cn
ServerAlias bluepost.cn
#redirect
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>
将域名签发的证书上传到反向代理服务器
<VirtualHost _default_:443>
ServerName www.bluepost.cn
ServerAlias bluepost.cn
SSLEngine on
SSLCertificateFile "conf/ssl.crt/bluepost.cn_public.crt"
SSLCertificateKeyFile "conf/ssl.key/bluepost.cn.key"
SSLCertificateChainFile "conf/ssl.crt/bluepost.cn_chain.crt"
#开启代理SSL,并验证后端服务器的证书
SSLProxyEngine on
#设置代理通过域名
ProxyPass / http://www.bluepost.cn/
ProxyPassReverse / http://www.bluepost.cn/
</VirtualHost>
需要同时修改反向代理服务器的本地hosts,添加域名映射到国外服务器,打开反向代理服务器的hosts文件,添加 115.155.2.10 www.bluepost.cn
通过域名转发只适用于部分地区无法访问,我们将无法访问地区域名解析到可访问地区的反向代理服务器。如果是国内所有地区都无法访问,这是域名被加黑名单了,我们只能通过后两种方法转发代理。
<VirtualHost _default_:443>
ServerName www.bluepost.cn
ServerAlias bluepost.cn
SSLEngine on
SSLCertificateFile "conf/ssl.crt/bluepost.cn_public.crt"
SSLCertificateKeyFile "conf/ssl.key/bluepost.cn.key"
SSLCertificateChainFile "conf/ssl.crt/bluepost.cn_chain.crt"
SSLProxyEngine on
# 不验证后端服务器的证书
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
#设置代理通过IP和端口
ProxyPreserveHost on #打开host域名请求地址,如果使用代理,获取的请求地址是对外域名,如果off关闭,则获取的是内网ip地址请求
ProxyPass / https://115.155.2.10:8001/ #将IP地址改为国外服务器的IP
ProxyPassReverse / https://115.155.2.10:8001/
</VirtualHost>
此步骤 不验证后端服务器的证书 不推荐(后端服务器配置时我们设置任意证书都可以),我们最好是添加自签名证书,然后配置后端服务器为自签名证书,并开启后端服务器https证书验证,详情参考另一篇文章制作Apache免费自签名SSL证书,配置Apache反向代理开启后端服务器https证书验证
<VirtualHost _default_:443>
ServerName www.bluepost.cn
ServerAlias bluepost.cn
SSLEngine on
SSLCertificateFile "conf/ssl.crt/bluepost.cn_public.crt"
SSLCertificateKeyFile "conf/ssl.key/bluepost.cn.key"
SSLCertificateChainFile "conf/ssl.crt/bluepost.cn_chain.crt"
#设置代理通过IP和端口
ProxyPreserveHost on #打开host域名请求地址,如果使用代理,获取的请求地址是对外域名,如果off关闭,则获取的是内网ip地址请求
ProxyPass / http://115.155.2.10:8001/ #将IP地址改为国外服务器的IP
ProxyPassReverse / http://115.155.2.10:8001/
</VirtualHost>
通过端口转发的,将端口加入后端服务器的防火墙(阿里云的可以加入安全组),这样可以限制指定的IP访问改端口,进一步增加安全性。具体操作方法参考另一篇文章,添加阿里云服务器安全组规则构建免费防火墙
修改http-ssl.conf文件,添加下边 缓存设置 部分代码
<VirtualHost _default_:443>
ServerName www.bluepost.cn
#在此处添加上一步的配置和其他配置
#缓存设置
CacheRoot "D:/www/cache/" #缓存目录,需要自行建立,并给Apache进程所在的用户分配NTFS权限
CacheEnable disk /
CacheDirLevels 2
CacheDirLength 1
</VirtualHost>
通过https/http + IP + 端口转发时,我们还需要配置后端服务器,详情参考另一篇文章制作Apache免费自签名SSL证书,配置Apache反向代理开启后端服务器https证书验证
ProxyPreserveHost选项:当后端出现多个”主机”
一、是IP访问的主机(没有ServerName),如果ProxyPreserveHost是Off的,转发给源服务器就没有域名首部,只有IP地址
二、是域名访问主机(有ServerName),如果ProxyPreserveHost是Off的,那么将访问www.bluepost.cn主机;反之为on,访问localhost主机
转载请注明:半亩方塘 » 解决放在国外服务器的网站在国内访问慢,解决网站报错ERR_CONNECTION_RESET – 配置Apache反向代理+缓存服务器