使用Nginx为网站设置反向代理

前几天遇到一个比较难搞的CDN,想了半天还是做了反代。

1、 首先安装Nginx(随便怎么装都行)


sudo apt-get install nginx

2、 在/etc/nginx/nginx.conf中的http{}部分include一个vhost的conf,例如


http {

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

gzip on;
gzip_disable "msie6";

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
include /etc/nginx/yoursite.conf;    #在最后添加一行

}

3、 vhosts.conf的内容可以这样写


## Basic reverse proxy server ##
## backend for yoursite ##
upstream apachephp {
server 1.2.3.4; #源站IP
}

## Start yoursite ##
server {
listen 80; #监听端口
server_name yoursite.com; #绑定域名

root html;
index index.php;

## send request back to source ##
location / {
proxy_pass http://yoursite.com; #回源域名 稍后会讲一个小技巧

#Proxy Settings 按照实际需求修改以下参数
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
## End yoursite ##

4、 重载Nginx


nginx -s reload

想要完全隐藏源站IP,只做这些事是不够的,这里有一个技巧。

关键就在proxy_pass的源站URL设置

一定不要使用DNS记录解析,而是在反代上使用hosts

方法简单易行,只要在/etc/hosts加一行就行了


1.2.3.4 yoursite.com

《使用Nginx为网站设置反向代理》有5个想法

  1. 有一个小地方可以改进一下。

    debian 系的 nginx 默认对各种附加站点配置文件的处理方式是加载 `sites-enabled` 文件夹(文中给出的内容里也包含了:

    “`
    include /etc/nginx/sites-enabled/*;
    “`

    而其中的配置文件均为符号链接自 `/etc/nginx/sites-available` 文件夹。

    这种文件管理方式是 debian 系为了模拟 apache 行为留下的(其实 RH 系的 nginx 是没有这种文件夹的默认配置的),但是在已经提供的前提下,将服务器的配置文件都放在一起管理要比直接在 `/etc/nginx/` 下放各种单独站点的配置文件确实要更好一些,并且在启用和禁用特定站点配置时也更方便,只需要删除或重新创建符号链接即可,不用再去编辑任何文件。

    1. 嗯嗯,在debian系实际部署中我的确是习惯性将conf放置到 /etc/nginx/sites-available 目录,此处是保留了引用原文中原作者的配置方法,RH系就不要吐槽了,conf.d 什么鬼嘛。-________-”

发表评论

电子邮件地址不会被公开。 必填项已用*标注