1、概述

nginx的正向代理,只能代理http、tcp等,不能代理https请求。有很多人不是很理解具体什么是nginx的正向代理、什么是反向代理。下面结合自己的使用做的一个简介:

1)正向代理:

     所谓正向代理就是内网服务器主动要去请求外网的地址或服务,所进行的一种行为。内网服务---访问--->外网

2)反向代理:

    所谓反向代理就是外网要访问内网服务而进行的一种行为。 外网----请求--->内网服务

(是不是太简洁了#@#)

 

2、两种代理配置方式:

 

1)正向代理:

    server端:

应用在nginx的server段,不要server_name,需要添加一个resolver。

server {
    # 配置DNS解析IP地址,比如 Google Public DNS,以及超时时间(5秒)
    resolver 8.8.8.8;    # 必需
    resolver_timeout 5s;

    # 监听端口
    listen 8080;

    access_log  /home/reistlin/logs/proxy.access.log;
    error_log   /home/reistlin/logs/proxy.error.log;

    location / {
        # 配置正向代理参数
        proxy_pass $scheme://$host$request_uri;
        # 解决如果URL中带"."后Nginx 503错误
        proxy_set_header Host $http_host;

        # 配置缓存大小
        proxy_buffers 256 4k;
        # 关闭磁盘缓存读写减少I/O
        proxy_max_temp_file_size 0;
         # 代理连接超时时间
        proxy_connect_timeout 30;

        # 配置代理服务器HTTP状态缓存时间
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}

client端:

一次代理,直接在shell执行:

#export http_proxy=http://192.168.1.9:8080

永久使用:

#vim .bashrc

export http_proxy=http://192.168.1.9:8080

#source  .bashrc

 

2)反向代理:

主要使用proxy_pass、upstream实现,upstream配置比较简单,但是如果做负载均衡和优化,还是需要下一番功夫的。这里不做想洗的介绍,参考我写的另外一篇高并发下的优化。