使用apache2反向代理访问google

引言 刚刚在v2ex上看到一篇用nginx做反向代理访问google的帖子,出于好奇,试了试用apache进行反向代理访问google,果然很好玩! 准备工作: apache服务器需要安装proxy相关模块,如果是ubuntu环境可以直接使用命令sudo a2enmod 模块名称进行安装,模块可以在/etc/apache2/mods-available/目录下查看,安装好的模块可以在/etc/apache2/mods-enabled/ 里查看 这里直接上配置: <VirtualHost *:443> ServerName facebook.smarthippo.club SSLEngine on SSLCertificateFile "/etc/letsencrypt/archive/facebook.smarthippo.club/cert1.pem" SSLCertificateKeyFile "/etc/letsencrypt/archive/facebook.smarthippo.club/privkey1.pem" SetEnvIf User-Agent “.*MSIE.*” \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 SSLProxyEngine On ProxyPass / https://www.facebook.com/ ProxyPassReverse / https://www.facebook.com/ </VirtualHost> <VirtualHost *:443> ServerName google.smarthippo.club SSLEngine on SSLCertificateFile "/etc/letsencrypt/archive/google.smarthippo.club/cert1.pem" SSLCertificateKeyFile "/etc/letsencrypt/archive/google.smarthippo.club/privkey1.pem" SetEnvIf User-Agent “.*MSIE.*” \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 SSLProxyEngine On ProxyPass / https://www.google.com.hk/ ProxyPassReverse / https://www.google.com.hk/ </VirtualHost> So,Google,Wiki,就是这么简单~ 备注: 这篇文章的前提当然是有一个国外的服务器,安利一波vultr(价格合理,且稳定,按天计费) 可以通过添加子域名的方式实现对不同墙外站点的访问,详见第二个配置 安装ssl证书网上太多,就不写了 目前存在的问题: 在反向代理站点中如果有跳转到其他被墙站点的链接,依然无法访问 部分网站对机器访问的请求有限制,比如google,虽然首页可以正常访问,但其他页面可能会访问不了,跳转到ipv4.google.com进行人机验证 最后还是没能第二个问题… 还是用科学上网吧… ...

October 14, 2017 · 1 min · 74 words

apache2开启SSL

windows+apache2开启SSL以及80端口强制跳转SSL访问的方法 申请证书 推荐Let’s Encrypt(免费证书的有效期为3个月,但提供了自动更新证书的功能),也可以用阿里云(免费证书有效期1年,目前是手动更新) 开启ssl模块 首先确保apache开启了LoadModule ssl_module modules/mod_ssl.so 配置443端口 再参考官方文档的一段内容: Listen 443 <VirtualHost *:443> DocumentRoot "项目入口文件目录" ServerName 域名 SSLEngine on SSLCertificateFile "路径/文件名.cert" SSLCertificateKeyFile "路径/文件名.key" </VirtualHost> 在apache的vhosts.conf中添加以上代码,重启apache 配置80端口跳转443 这里直接上代码: <VirtualHost *:80> RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] ServerName 域名 </VirtualHost> 告诉apache将该域名下80端口的所有请求跳转到443,重启apache 至此配置完成 在ubuntu环境下配置基本一样,开启apache ssl模块支持使用sudo a2enmod ssl,然后重启service apache2 restart 补充: 后面在一个微信项目中发现以上做法的一个问题: 安卓手机在使用微信内置浏览器QQ浏览器X5内核提供技术支持访问可能会出现页面空白的情况,而在PC端的调试工具和IOS以及其他浏览器上未发现该问题 解决方法:修改虚拟机配置如下: Listen 443 <VirtualHost *:443> DocumentRoot "项目入口文件目录" ServerName 域名 SSLEngine on SSLCertificateFile "路径/文件名.cert" SSLCertificateKeyFile "路径/文件名.key" SSLCertificateChainFile "路径/文件名.pem" </VirtualHost> 其实就是添加了一行SSLCertificateChainFile ...

September 8, 2017 · 1 min · 72 words