标签:代理服务器 config etc xxxx source .com location 代理 out
正向代理:局域网中的客户端不能直接访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。Nginx本身只支持http的正向代理,并通过ngx_http_proxy_connect_module模块支持http、https的正向代理;
反向代理:如果局域网向Internet提供资源服务,让Internet上的其他客户端来访问局域网内不的资源,使它们必须通过一个代理服务器来进行访问内部资源,这种服务就称为反向代理;Nginx通过proxy模块实现反向代理功能。
假设现在的环境是,局域网中只有一台机器:192.168.10.154配有某个公网IP,如此可以直接访问公网,而其他局域网服务器需要通过154上的代理来访问公网:
正向代理http:
1、# vim /etc/nginx/conf.d/proxy.conf
server {
resolver 8.8.8.8;
listen 9999;
access_log /var/log/nginx/proxy.access.log main;
error_log /var/log/nginx/proxy.error.log;
location / {
proxy_pass http://$http_host$request_uri;
}
}
2、在需要访问公网的服务器配置环境变量
# vim /etc/profile
export http_proxy=http://192.168.10.154:9999
# source /etc/profile
yum源配置:
# vim /etc/yum.conf
proxy=http://192.168.10.154:9999
通过curl指定代理来测试http串是否返回200
# curl -x 192.168.10.154:9999 -I http://xxxx.xxxx.xxxx/xxx.xxx
3、不支持代理 Https 网站
作为 web_server Nginx 当然是可以处理 ssl 的,但作为proxy则是不行的。因为nginx不支持CONNECT,收到“CONNECT /:443 HTTP/1.1”后会报一个包含“client sent invalid request while reading client request line,” 的错误。因为 CONNECT 是正向代理的特性。
例:
访问:# curl -I -x 192.168.10.154:9999 ‘https://www.baidu.com/?tn=93380420_hao_pg‘
日志:192.168.10.X - [04/Nov/2017:10:23:46 +0800] "CONNECT www.baidu.com:443 HTTP/1.1" 400 173 "-" "-" - - - - "-"
那么,如何让nginx的正向代理,既支持http又支持https的代理访问呢?
需要安装模块:ngx_http_proxy_connect_module
1、安装(具体省略)
./configure --add-module=/path/to/ngx_http_proxy_connect_module
make && make install
2、配置
server {
listen 3128;
# dns resolver used by forward proxying
resolver 8.8.8.8;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443 563;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
3、测试
# curl https://github.com/ -v -x 192.168.10.154:3128
……
HTTP/1.0 200 Connection Established
……
标签:代理服务器 config etc xxxx source .com location 代理 out
原文地址:http://www.cnblogs.com/dangwgKing/p/7783140.html