> ## Content Index
> Fetch the complete content index at: https://blog.k3s.9zf.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# 转载一个Nginx反向代理的资料
- URL: https://blog.k3s.9zf.net/-e8-bd-ac-e8-bd-bd-e4-b8-80-e4-b8-aanginx-e5-8f-8d-e5-90-91-e4-bb-a3-e7-90-86-e7-9a-84-e8-b5-84-e6-96-99/
- Published: 2010-11-11T05:54:25.000Z
- Updated: 2010-11-11T05:54:25.000Z
- Author: liu
- Tags: Linux, web服务器, 精品网文, #wordpress, #Import 2026-10-29 06:11

有时间自己测试下  
自今年互联网环境大整顿，从电信机房到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.3js.com.cn，那么www.3js.com.cn的A记录应指向到你VPS的 IP上，然后可以建立个block.3js.com.cn指向你被封的服务器IP，修改VPS的Nginx.conf配置文件。在末尾处(“}”号之前)添加如下内容：

> server { 
> 
> listen 80; 
> 
> server\_name www.3js.com.cn; 
> 
> proxy\_set\_header X-Real-IP $remote\_addr; 
> 
> proxy\_set\_header REMOTE-HOST $remote\_addr; 
> 
> proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for; 
> 
> access\_log /home/www/logs/3js.com.cn\_access.log; 
> 
> location /robots.txt { 
> 
> root /home/www/www.3js.com.cn; 
> 
> } 
> 
> location / { 
> 
> proxy\_pass http://block.3js.com.cn:81; 
> 
> \# 此处填写你的IP或者域名外加你服务器开放的端口。 
> 
> } 
> 
> } 

执行 

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

> proxy\_redirect off; 
> 
> proxy\_set\_header Host $host; 
> 
> proxy\_set\_header X-Real-IP $remote\_addr; 
> 
> proxy\_set\_header REMOTE-HOST $remote\_addr; 
> 
> proxy\_set\_header X-Forwarded-For $remote\_addr; 
> 
> proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for; 
> 
> client\_max\_body\_size 10m; 
> 
> client\_body\_buffer\_size 128k; 
> 
> proxy\_connect\_timeout 90; 
> 
> proxy\_send\_timeout 90; 
> 
> proxy\_read\_timeout 90; 
> 
> proxy\_buffer\_size 32k; 
> 
> proxy\_buffers 4 32k; 
> 
> proxy\_busy\_buffers\_size 64k; 
> 
> proxy\_temp\_file\_write\_size 64k; 
> 
> proxy\_ignore\_client\_abort on; 
> 
> proxy\_next\_upstream error timeout invalid\_header http\_500 http\_503 http\_404; 
> 
> proxy\_max\_temp\_file\_size 128m; 

在nginx.conf 末尾的”}”前加上一行: 

> include proxy.conf;

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

> server {  
> listen 80;  
> server\_name www.3js.com.cn;  
> location / {  
> proxy\_pass http://block.3js.com.cn:81;  
> }  
> }

示例：

> server { listen 80; server\_name www.3js.com.cn; location / { proxy\_passhttp://block.3js.com.cn:81; }}  
> server { listen 80; server\_name www1.3js.com.cn; location / { proxy\_passhttp://block.3js.com.cn:82; }}  
> server { listen 80; server\_name www2.3js.com.cn; location / { proxy\_passhttp://block.3js.com.cn:83; }}