使用nginx搭建http代理服务器
未加密解决方案
server { listen 8080; resolver 8.8.8.8; location /{ proxy_pass http://$http_host$request_uri; #allow 127.0.0.1; #deny all; } }
注意:必须加上resolver 8.8.8.8;给nginx指定dns,否则会报告“nginx 502 bad gateway”错误,也可以通过allow和deny来设置只有指定IP能够访问,修改后重启nginx。
在QQ登陆的时候设置代理服务器类型是HTTP,端口8080即可登陆^^
加密解决方案:
server {
listen 8080;
client_body_timeout 60000;
client_max_body_size 1024m;
send_timeout 60000;
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;proxy_headers_hash_bucket_size 1024;
proxy_headers_hash_max_size 4096;
proxy_read_timeout 60000;
proxy_send_timeout 60000;location / {
auth_basic “Please enter your password:”;
auth_basic_user_file /var/www/vhosts/htpasswd;
resolver 8.8.8.8;
proxy_pass http://$http_host$request_uri;
}
}
resolver 8.8.8.8; 代表使用Google DNS来解析域名.
client_body_timeout,large_client_header_buffers 等设置,确保大的请求不会返回400错误.
auth_basic和auth_basic_user_file是身份认证设置.
但这个代理服务器只支持http请求,https会报400错误.
在实际应用中,使用nginx做带密码认证的http正向代理并不合适,因为没有设置密码认证间隔的模块,所以每访问一个页面都要输入一次密码,对于没有安装可以保存密码的代理插件的浏览器用户来说简直就是噩耗.