Big Bug Ban

兴趣 践行 创新

Archive for 6月, 2014

nginx双向https代理

 

前段时间有一个googlestable.com。

但是呢。它是http协议的。于是突发奇想根据googlestable代理的原理

弄一个双向https的代理应该可行了

要做的事情

image

首先我们需要一个nginx

wget  http://nginx.org/download/nginx-1.7.2.tar.gz

tar xvf nginx*.tar.gz

./configure –prefix=/opt/net.techest/tpanel/server/nginx-1.7.2 –with-http_ssl_module  –with-http_sub_module

这里注意需要两个附加模块。第一个即ssl加密模块,第二个用来做响应的替换

因为没有交钱,所以得找个地方,签名生成为我们的服务器生成一个自己用的证书

openssl req -new -x509 -nodes -out server.crt -keyout server.key

上部命令会生成两个文件,按他们的路径配置如下的nginx配置

server {
listen 443;
server_name g.techest.net;
keepalive_timeout  60m;

access_log  /home/techest/logs/g.techest.net.nginx_access.log  main;

ssl on;
ssl_certificate /opt/net.techest/tpanel/etc/sslkey/server.crt;
ssl_certificate_key /opt/net.techest/tpanel/etc/sslkey/server.key;

ssl_session_timeout 60m;

ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

location / {
client_max_body_size    8m;
proxy_connect_timeout   15s;
proxy_send_timeout      1m;
proxy_read_timeout      1m;
proxy_buffer_size         32k;
proxy_buffers             4 32k;
proxy_busy_buffers_size 64k;
# 需要访问的网站
proxy_pass https://www.google.com.hk;
# 设置一下访问头
proxy_set_header  Host www.google.com.hk;
proxy_set_header  X-Real-IP       $remote_addr;
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
# 把cookie也代理过去
proxy_set_header  Cookie          $http_cookie;
proxy_set_header  “Accept-Encoding” “”;
# 替换远端返回的cookie的作用域
proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $host;
# 替换远端的302重定向
proxy_redirect ~*(.*)$ /;
# 统一替换远端响应
sub_filter “google.com.hk” “g.techest.net”;
sub_filter_types “*”;
sub_filter_once off;
}
# 防止google擅自主张打开了gzip
add_header Set-Cookie “GZ=Z=0;Domain=$host;Path=/;Max-Age=31536000”;
}

 

说明一下几个配置

  • 最后那个地方是因为google新版使用cookie里面的GZ来决定是否开启gzip,优先级比上面写的Accept-Encoding还要高
  • sub_filter只能替换一次,本来想用nginxlua来替换的,结果安装有问题,放弃了。而且注意如果服务端返回的是压缩数据就没有效果了
  • proxy_cookie_domain可以强制把远程返回的cookie域改写掉。这样cookie和session都打通了

Written by princehaku

6月 22nd, 2014 at 9:59 下午