利用Nginx反向代理解决服务器80端口被封

自今年互联网环境大整顿,从电信机房到IDC再到用户,都深有感触,此次整顿由整治色情牵头,逐渐发展成打黄扫非的专项行动,采取史上最严厉的措施:拔线,封机房。很多IDC和电信签了合同,由于服务器上存在那么一两个“非法”网站而导致更多合法用户遭到连坐,一旦80端口被封,其他合法用户的域名无法访问。紧接着又加强了域名备案制度,刚申请的域名尚未备案完成就急于指向IP导致该IP地址被封,其他合法用户的域名也会无法访问。

本文是建立在你网站本身“合法”但却因连坐导致网站无法访问的基础上,利用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的web服务器相关介绍及安装,可以参考张宴大师的 《Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]》 一文。

今天我们重点介绍如何通过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配置文件。在末尾处(“}”号之前)添加如下内容:

01 server {
02  listen   80;
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;
10  }
11  location / {
12     proxy_pass http://block.opensoce.com:81;
13 # 此处填写你的IP或者域名外加你服务器开放的端口。
14  }
15 }

执行

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
内容如下:

01 proxy_redirect     off;
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;
07  
08 client_max_body_size    10m;
09 client_body_buffer_size    128k;
10 proxy_connect_timeout   90;
11 proxy_send_timeout      90;
12 proxy_read_timeout      90;
13 proxy_buffer_size         32k;
14 proxy_buffers             4 32k;
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 末尾的”}”前加上一行:

1 include proxy.conf;

然后你要支持几个网站就在 nginx.conf添加几行:

1 server {
2   listen 80;
3   server_name www.opensoce.com;
4   location / {
5     proxy_pass http://block.opensoce.com:81;
6   }
7 }

示例:

1 server { listen 80; server_name  www.opensoce.com; location / { proxy_passhttp://block.opensoce.com:81; }}
2 server { listen 80; server_name  www1.opensoce.com; location / { proxy_passhttp://block.opensoce.com:82; }}
3 server { listen 80; server_name  www2.opensoce.com; location / { proxy_passhttp://block.opensoce.com:83; }}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着Web应用程序的不断发展,越来越多的Web开发者需要处理跨域访问的问题。尤其在网站开发中,标签<iframe>存在一些跨域问题,需要得到解决解决这些问题的一种方案是使用反向代理服务器Nginx是一个功能强大的开源服务器软件,可以用来提供反向代理服务,也可以作为Web服务器、邮件服务器和负载均衡器。 在使用Nginx作为反向代理服务器时,可以按如下步骤解决iframe跨域问题: 1.安装和配置Nginx。首先,您需要在服务器上安装Nginx,并确保nginx.conf文件正确配置。配置反向代理服务器,将请求从原始服务器发送到新的服务器。 2.设置虚拟主机。为了使Nginx适用于您的网站,需要设置虚拟主机,配置主机的ip格式和端口号。通常情况下,虚拟主机可以支持多个域名和主机名,可以同时接收多个请求。 3.设置location指令。为了完成反向代理任务,可以使用location指令,将请求传递给正确的服务器,并且从指定的URL获取响应。具体而言,您需要在nginx.conf文件中指定location指令,并告诉Nginx需要向哪个服务器发送请求。 4.启用SSL。如果您的网站需要安全的传输,比如HTTPS,那么您可以使用SSL/TLS加密功能。在Nginx中配置SSL,需要使用SSL module或者OpenSSL来启用。 总之,Nginx是一个非常强大的反向代理服务器,可以很好地解决网站开发中的问题。利用反向代理功能,您可以很容易地解决iframe跨域访问的问题,确保您的Web应用程序能够正常运行并保持安全性和高可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值