本文是建立在你网站本身“合法”但却因连坐导致网站无法访问的基础上,利用Nginx实现访问你机器的其他端口。
准备条件:国内外正常提供服务并装好Nginx的VPS一个。推荐Xen VPS、OpenVZ。既然是VPS建议装CentOS,CentOS就是免费的。Nginx本身也是在Linux/BSD平台下的效率最高。
一直以来我们都把Nginx当成高性能的Web服务器来用,却忽略了其反向代理服务器的重要作用,注意看:“Nginx [engine x] is a HTTP and reverse proxy server”的后半部分,reverse proxy server即反向代理服务器。
今天我们重点介绍如何通过Nginx反向代理功能,实现访问网站域名的的时候自动访问你服务器的其他某个端口,比如81,当然你的81端口要能使用,不能用81的话你就在你被Blocked 80的服务器上指定65535内找个能用的端口,然后指定IIS或者Apache的Web服务端口为该端口。
1.一台服务器一个网站
我们假定主域名为 www.opensoce.com,那么www.opensoce.com的A记录应指向到你VPS的 IP上,然后可以建立个block.opensoce.com指向你被封的服务器IP,修改VPS的Nginx.conf配置文件。在末尾处(“}”号之前)添加如下内容:
03 | server_name www.opensoce.com; |
04 | proxy_set_header X-Real-IP $remote_addr ; |
05 | proxy_set_header REMOTE-HOST $remote_addr ; |
06 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; |
07 | access_log /home/www/logs/opensoce.com_access.log; |
08 | location /robots.txt { |
09 | root /home/www/www.opensoce.com; |
13 | # 此处填写你的IP或者域名外加你服务器开放的端口。 |
执行
1 | kill -HUP `ps aux|grep "nginx: master " |awk \'{ print $2 }\'` |
平滑重启nginx即可。
这个是一个网站的反向代理,如果你有多个网站,那么在服务器的Apache的httpd.conf中分配不同的端口给不同的站点,然后在VPS的Nginx.conf按照上面的代码复制一份修改端口和域名即可,有多少个网站服务器就要开多少个端口,相应的 vps上的nginx.conf也要有相关配置才能正常访问。
2.一台服务器多个站
在nginx.conf同目录建立 proxy.conf
内容如下:
02 | proxy_set_header Host $host ; |
03 | proxy_set_header X-Real-IP $remote_addr ; |
04 | proxy_set_header REMOTE-HOST $remote_addr ; |
05 | proxy_set_header X-Forwarded-For $remote_addr ; |
06 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; |
08 | client_max_body_size 10m; |
09 | client_body_buffer_size 128k; |
10 | proxy_connect_timeout 90; |
15 | proxy_busy_buffers_size 64k; |
16 | proxy_temp_file_write_size 64k; |
17 | proxy_ignore_client_abort on; |
18 | proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; |
19 | proxy_max_temp_file_size 128m; |
在nginx.conf 末尾的”}”前加上一行:
然后你要支持几个网站就在 nginx.conf添加几行:
3 | server_name www.opensoce.com; |
示例:
1 | server { listen 80; server_name www.opensoce.com; location / { proxy_passhttp: |
2 | server { listen 80; server_name www1.opensoce.com; location / { proxy_passhttp: |
3 | server { listen 80; server_name www2.opensoce.com; location / { proxy_passhttp: |
No comments:
Post a Comment