Nginx的正向代理

注意:

Nginx不支持HTTPS协议的正向代理,所以如果访问HTTPS的站点,会出现HTTP400的错误;提示如下

Shell>#    curl -i https://www.baidu.com

HTTP/1.1    400 Bad Request

Server:    nginx

Date:    Wed, 13 Apr 2016 03:46:17 GMT

Content-Type:    text/html; charset=UTP-8

Content-Length:    166

Connection:    close

 

curl:    (56) Received HTTP code 400 from proxy after CONNECT

看,出错了吧

我们修改配置文件如下

User  nginx

worker_processes  1;

events  {

    worker_connections  1024;

}

http  {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

          resolver 8.8.8.8;

          resolver_timeout 5s;

          listen 0.0.0.0:8080;

          access_log  /var/log/nginx/proxy.access.log;

          error_log   /var/log/nginx/proxy.error.log;

          location / {

              proxy_pass  $scheme://$host$request_uri;

              proxy_set_header Host $http_host;

              proxy_buffers 256 4k;

              proxy_max_temp_file_size 0;

              proxy_connect_timeout 30;

              proxy_cache_valid 200 302 10m;

              proxy_cache_valid 301 1h;

              proxy_cache_valid any 1m;

          }

}

}

说明

上面sever段第一行配置了DNS服务器得地址,以及超时时间。第三行配置了监控的端口,然后是日志文件

对于linux客户机系统来说

我们可以使用如下命令使用代理

Shell>#export http_proxy=http://192.168.1.16:8080

Shell>#export ftp_proxy=http://192.168.1.16:8080

Shell>#export no_proxy=192.168.10.0.

上例中,我们使用192.168.1.16代理了http还有ftp协议,同时对于局域网中的信息,我们不代理。直接走本地路由。

这个在重启后会失效,如果不不希望失效,那就可以写入系统配置文件,这里不在说明。