nginx 正向代理
来源:互联网 发布:淘宝女装店招素材 编辑:程序博客网 时间:2024/05/22 02:06
一,Nginx 正向代理配置文件:
server { resolver 8.8.8.8; resolver_timeout 5s; listen 0.0.0.0:8080; access_log /home/reistlin/logs/proxy.access.log; error_log /home/reistlin/logs/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; }}
二,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 4k;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-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在VPN网关上设置一个透明代理能在一定程度上提高客户端的下载速度。最适合做透明代理的自然是squid,但squid有两个缺点:
- 不支持多CPU;
- 存在内存泄漏问题,我设置squid内存缓存64m,结果睡一觉起来发现squid吃了200m+。
后来听kangzi说nginx也可以架设http代理,所以考虑把squid换成nginx。
nginx并不是为正向代理设计的,所以如果你的机器上没有出现上面的两个问题,或者内存不是非常紧张(squid占的内存比nginx多),用squid就行了。
nginx做透明代理的配置文件分两段,第一段是在http{}里定义内存缓存,nginx自身不支持内存缓存,但linux有特殊的文件系统/dev/shm,将缓存目录指向这里就是用内存做缓存了。示例如下:
1234
http {proxy_cache_path /dev/shm/nginx/proxy_cache levels=2 keys_zone=mem_cache:64m inactive=7d max_size=64m;proxy_temp_path /dev/shm/nginx/proxy_temp;}
如果缓存在/dev/shm上存不下,nginx会给客户端返回404。
/dev/shm的大小与内存并不等值,用
1
df -h /dev/shm
可以查看。
第二段是在server里配置代理。如果VPN客户端有用Dropbox,那么应该设置较长的proxy_xxx_timeout项——Dropbox有一个HTTP的ping-pong机制,服务器响应时间会在60s以上,而nginx默认的timeout都是60s,会返回502 Gateway Timeout,这时客户端就会掉线。示例如下:
12345678910111213
server {listen 3128;resolver 8.8.8.8;proxy_cache mem_cache;proxy_max_temp_file_size 4m; location / {proxy_pass http://$host$request_uri;proxy_connect_timeout 60;proxy_send_timeout 120;proxy_read_timeout 120;}}
补充:我测试了debian打包的两个版本,0.7.67(squeeze的)和0.8.54(sid的),0.7.67在处理cookie相关的缓存时有bug,0.8.54还没有出现这个问题。
- Nginx正向代理
- Nginx正向代理
- Nginx实现正向代理
- nginx 正向代理
- Nginx正向代理配置
- Nginx配置正向代理
- nginx 正向代理
- nginx正向代理
- nginx正向代理
- nginx配置正向代理
- 配置Nginx正向代理
- Nginx正向代理配置
- nginx 正向代理 反向代理
- nginx正向代理的不足
- Nginx正向代理的例子
- nginx 正向代理配置文件示例
- nginx 简单正向代理配置
- Nginx正向代理(透明代理)配置
- Google Guava官方教程(中文版)
- php文件上传
- Android开发之APN网络切换
- 10. 泛型 Part 1 --- 学习笔记
- Sprite Kit编程指南(4)-构建场景
- nginx 正向代理
- 1001. A+B Format (20)
- java环境的搭建
- Git的安装使用(centos)
- Solr连接数据库
- Sprite Kit编程指南(5)-使用场景间过渡
- 操作系统中的进程同步
- IT国产化之路:失意者与受益者
- MyEclipse中Jboss启动出现Java heap space解决方案