1、Nginx 反向绑定域名方法和详细操作应用实例:Google 和 Gravatar反向绑定域名,即将域名 B 绑定到域名 A 上,用户只要访问 B 就等同于进入 A,内容都是由 A 提供,它有点像建立了一个 A 的镜像。什么时候要用到反向绑定域名?服务器集群和网站负载均衡时,把用户访问请求发送不同的服务器上。关于反向绑定域名的方法部落之前也分享过好几次,本篇文章就来详细介绍一下Nginx 反向绑定域名方法。之所以要用 Nginx,主要在于 Nginx 在反向绑定域名有着天然的优势,并且功能强大,可以满足我们更多更高的应用需求。平常我们都是用 Nginx 反向绑定域名来搞定无法绑定域名的空间,这
2、次来分享一下搞定 Google 和 Gravatar 两个网站访问的问题,更多的有关于反向绑定域名的方法还有:1. 多种应用:反向绑定域名的方法-强制绑定域名,实现负载均衡,域名内网转发;2. 简单操作:反向绑定域名方法-Nginx 反向配置和 kangle 服务器反向设置;3. 虚拟主机:7ghost 基于 PHP 的网站反向绑定域名程序无需.htaccess 的 URL 重写。注意:上面提到的 Nginx 反向绑定域名都需要用到 VPS 主机,如果你只有虚拟主机,则可以试试 7ghost。Nginx 反向绑定域名方法和详细操作应用实例:Google 和 Gravatar一、Nginx 安装
3、和基本操作命令1、Nginx 可以直接使用 LNMP 这样的一键安装包,例如:LNMP 新版 VPS 主机控制面板安装。2、如果你是用一个专门的服务器来作反向绑定域名用,则只需要安装一个 Nginx 即可,为 VPS 主要省点资源。命令: wget http:/sysoev.ru/nginx/nginx-0.7.64.tar.gz tar zxvf nginx-0.7.64.tar.gz cd nginx-0.7.64 ./configure -user=www -group=www -prefix=/usr/local/nginx -with-http_stub_status_module
4、-with-http_ssl_module -with-ipv6 make server_name ; location / proxy_pass http:/ proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 2、你只需要修改 server_name 和 proxy_pass 的值即可。保存 nginx.conf,重启Nginx,打开你的域名,就可以看到反向的效果了。3、如果想要反向绑定百度,直接把域
5、名修改为百度的域名。4、然后打开自己的域名,就可以看到是百度了。三、Nginx 反向绑定域名:带 SSL 证书1、为了能够保证自己反向绑定的“安全”,一般建议使用 SSL 证书。SSL 证书现在购买也不是很贵,参考:Namecheap SSL 证书购买和 SSL 激活安装使用方法和新 Godaddy Cpanel 主机安装 Godaddy SSL 证书方法。2、Nginx 使用 SSL 进行反向绑定域名,修改 nginx.conf 如下: server listen 80; server_name ; location / rewrite /(.*)$ https:/$1 permanent
6、; server listen 443; server_name ; if ($host = ) rewrite /(.*)$ https:/$1 permanent; ssl on; ssl_certificate /root/myssl/myssl.crt; ssl_certificate_key /root/myssl/privkey.key; location / proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forw
7、arded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass https:/; proxy_set_header Host ““; proxy_set_header Accept-Encoding “; proxy_set_header User-Agent $http_user_agent; 3、代码对 www 和非 www 请求都统一到了 Https 的非 www 请求上了。ssl on 是开启SSL,ssl_certificate 和 ssl_certificate_key 是连接 CRT 和 Key 文件,你需要修改成你
8、自己的路径。4、不想购买付费的 SSL 证书的朋友,可以申请免费的 StartSSL 证书,已经被 90%以上的浏览器所认可并支持:StartSSL 免费 SSL 证书成功申请-HTTPS 让访问网站更安全四、Nginx 反向绑定域名:subs_filter 优化请求和解决 Google 验证码问题1、上面我们已经将 ngx_http_substitutions_filter_module 模块编译进入到了Nginx,这个模块主要是为了将网页中的所请求都转发自己的服务器。2、在 location 中加入以下代码,类似: location / proxy_redirect off; proxy_
9、set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass https:/; proxy_set_header Host ““; proxy_set_header Accept-Encoding “; proxy_set_header User-Agent $http_user_agent; subs_filter ; subs_filter ; subs
10、_filter_types text/css text/xml text/javascript; 3、单个 IP 地址如果在短时间内对 Google 发送大量的 IP 请求,会被 Google 判定为机器人,从而出现搜索验证码的情况,为了解决这个问题,我们可以在 Http 层加入以下代码,类似于: upstream google server 74.125.139.1:80 max_fails=3; server 74.125.139.2:80 max_fails=3; server 74.125.139.3:80 max_fails=3; server 74.125.139.4:80 max
11、_fails=3; server 74.125.139.5:80 max_fails=3; server listen 80; server_name ; location / rewrite /(.*)$ https:/$1 permanent; 4、upstream google 写了 Google 的服务器 IP 地址,如果请求量非常大的话,建议多写一些。五、Nginx 反向绑定域名:使用 Nginx 缓存来加速访问请求1、nginx 自带的 proxy_cache 模块可以实现访问缓存,即第二次访问可以直接从自己的服务器读取相应的数据了,而不需要再来一次中转请求了。2、先在 Http
12、 层加入以下代码,类似: proxy_cache_path /home/cache/freehao123 levels=1:2 keys_zone=one:10m max_size=10g; proxy_cache_key “$host$request_uri“; server listen 80; server_name ; location / rewrite /(.*)$ https:/$1 permanent; 3、proxy_cache_path 是缓存目录路径,你需要提前创建好,并设置好读写权限。4、接着在 location 中加入以下代码,类似于: location / pro
13、xy_cache one; proxy_cache_valid 200 302 1h; proxy_cache_valid 404 1m; proxy_redirect https:/ /; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass https:/; proxy_set_header Host ““; proxy_set_head
14、er Accept-Encoding “; proxy_set_header User-Agent $http_user_agent; 5、proxy_cache 中的值要与前面的 keys_zone 值相同。重启 Nginx 后,可以使用Https 访问了。6、同时打开缓存目录,能看到生成了缓存数据了。六、Nginx 反向绑定域名:解决 Google 和 Gravatar 无法访问的问题1、上面的代码都是基于反向 D 理 Google 的,以下就是经部落测试有效的代码,你只需要将域名、upstream IP 地址、证书路径、缓存目录等改自己的内容即可: http include mime.t
15、ypes; default_type application/octet-stream; sendfile on; proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_temp_path /usr/local/src/cache/temp; proxy_cache_path /usr/
16、local/src/cache/one levels=1:2 keys_zone=one:10m inactive=7d max_size=10g; proxy_cache_key “$host$request_uri“; upstream google server 64.15.24.122:80 max_fails=3; server 92.19.28.214:80 max_fails=3; server 64.150.13.60:80 max_fails=3; server listen 80; server_name ; rewrite /(.*)$ https:/$1 perman
17、ent; location / root html; index index.html index.htm; error_page 500 502 503 504 /50x.html; location = /50x.html root html; server listen 443; server_name ; if ($host = ) rewrite /(.*)$ https:/$1 permanent; ssl on; ssl_certificate /usr/local/src/myssl/myssl.crt; ssl_certificate_key /usr/local/src/
18、myssl/privkey.key; location / proxy_cache one; proxy_cache_valid 200 302 1h; proxy_cache_valid 404 1m; proxy_cache_valid 301 3d; proxy_cache_valid any 1m; proxy_cache_use_stale invalid_header error timeout http_502; proxy_redirect https:/ /; proxy_cookie_domain ; proxy_pass http:/google; proxy_set_
19、header Host ““; proxy_set_header Accept-Encoding “; proxy_set_header User-Agent $http_user_agent; proxy_set_header Accept-Language “zh-CN“; proxy_set_header Cookie “PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw“; subs_filter_t
20、ypes text/css text/xml text/javascript; subs_filter ; subs_filter ; location /gb proxy_pass http:/ proxy_set_header Accept-Encoding “; 2、解决 Gravatar 头像无法显示的问题也是一样的原理,我们只需要将反向绑定的域名换成 Gravatar 的 就行了。3、解决 Gravatar 头像不显示的代码,部落测试有效的如下: proxy_cache_path /home/cache/mmtaoyi levels=1:2 keys_zone=one:10m
21、 max_size=10g; proxy_cache_key “$host$request_uri“; server listen 80; server_name ; location / rewrite /(.*)$ https:/$1 permanent; server listen 443; server_name ; if ($host = ) rewrite /(.*)$ https:/$1 permanent; ssl on; ssl_certificate /root/myssl/myssl.crt; ssl_certificate_key /root/myssl/privk
22、ey.key; location / proxy_cache one; proxy_cache_valid 200 302 1h; proxy_cache_valid 404 1m; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_pass https:/; proxy_set_header Host ““
23、; proxy_set_header Accept-Encoding “; proxy_set_header User-Agent $http_user_agent; 3、访问自己的域名后,会看到是 Gravatar 网站的内容。4、将自己的域名替换为 Gravatar 头像的域名,就能够正常显示图片了。七、Nginx 反向绑定域名方法小结1、上面介绍了三种单独安装 Nginx 的方法,都是经过部落测试通过的,启动了 Nginx后就可以用你的浏览器打开 IP 地址访问到有 Nginx 标志的页面了。如果无法访问,建议检查 VPS 主机的防火墙有没有开启 80 和 443 端口,开启方法: /sbin/iptables -I INPUT -p tcp -dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp -dport 443 -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart2、ngx_http_substitutions_filter_module 这个模块是用来替换反向绑定域名页面的关键词,在第三种安装 Nginx 的方法中增加了这个模块。像 Google 这样的的加载了 这个网址的内容,我们也都一并将其替换了。