Nginx 作为Http代理服务器配置

来源:互联网 发布:mac用户登录界面卡住 编辑:程序博客网 时间:2024/05/17 01:25
Nginx Http Proxy 代理服务器, 功能和 Squid 一样,适用于正向代理 Http 网站。 

 
需求如下: 

    1.有一台nginx在国外 

    2.国内的用户访问web 通过先在本地 proxy服务器的ip和端口,然后可就可以通过代理来访问国外的所有网站了。 

一.Nginx 正向代理配置文件: 
user  nginx; 
worker_processes  1; 

error_log  logs/error.log; 

events { 
    worker_connections  1024; 


http { 
    include       mime.types; 
    default_type  application/octet-stream; 

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
                      '$status $body_bytes_sent "$http_referer" ' 
                      '"$http_user_agent" "$http_x_forwarded_for"'; 
     access_log  logs/access.log  main; 
server { 
    resolver 8.8.8.8; 
    resolver_timeout 5s; 

    listen 8081; 

    location / { 
        proxy_pass $scheme://$host$request_uri; 
        proxy_set_header Host $http_host; 

        proxy_buffers 256 8k; 
        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; 
    } 





二.Nginx 正向代理配置解释: 

1.配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超时时间(5秒)。 

resolver 8.8.8.8; 
resolver_timeout 5s; 

2.配置正向代理参数,均是由 Nginx 变量组成。其中 proxy_set_header 部分的配置,是为了解决如果 URL 中带 "."(点)后 Nginx 503 错误。 

proxy_pass $scheme://$host$request_uri; 
proxy_set_header Host $http_host; 

3.配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。 

proxy_buffers 256 8k; 
proxy_max_temp_file_size 0; 
proxy_connect_timeout 30; 

4.配置代理服务器 Http 状态缓存时间。 

proxy_cache_valid 200 302 10m; 
proxy_cache_valid 301 1h; 
proxy_cache_valid any 1m; 

三.不支持代理 Https 网站 

因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站(网上银行,Gmail)。 
如果访问 Https 网站,比如:https://www.google.com,Nginx access.log 日志如下: 

"CONNECT www.google.com:443 HTTP/1.1" 400
0 0