什么是代理?
代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
盗了两张图,第二张比较形象:
你(client)需要访问某台服务器(server),但是你没有访问渠道,只能通过一个代理服务器(proxy)去访问server。这个过程就要正向代理,特点是你知道你访问的目的地但是只能通过代理去访问。
正向代理的代理服务器(proxy)代理的是客户端(clinet)。
正向代理的有个典型例子是“翻墙”,比如你通过代理去访问Google。
你(client)访问了某台服务器,但实际上这台服务器只是一个代理服务器(proxy),代理服务器会把请求转交给真正提供服务的服务器(server)。这个过程就要反向代理,特点是你只知道你访问的代理服务器能提供服务,但是不知道谁是真正的服务提供者(也不需要知道)。
反向代理的代理服务器(proxy)代理的是服务器端(server)。
反向代理的一般用于服务器负载均衡。
打开配置文件,在http块增加下面代码:
# http正向代理
server {
# 指定DNS服务器IP地址
resolver 114.114.114.114;
# 监听端口(http)
listen 80;
location / {
# 设定代理服务器的协议和地址
proxy_pass $scheme://$http_host$request_uri;
proxy_set_header HOST $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
#access_log logs/proxy_access.log;
#error_log logs/proxy_error.log;
}
# https正向代理
server {
# 指定DNS服务器IP地址
resolver 114.114.114.114;
# 监听端口(http)
listen 443;
location / {
# 设定代理服务器的协议和地址
proxy_pass $scheme://$http_host$request_uri;
# 代理配置参数
proxy_set_header HOST $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
#access_log logs/proxy_access.log;
#error_log logs/proxy_error.log;
}
Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。
打开配置文件,在http块增加:
# 设定实际的服务器列表
upstream proxy_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
# ...
}
注:upstream作用是使nginx轮询访问,每一个请求按时间顺序逐一分配到不同的后端服务器。
然后在配置代理服务器的server块中增加:
#反向代理的路径(和upstream绑定),location 后面设置映射的路径
location / {
proxy_pass http://proxy_server;
# 代理配置参数
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
}
本文标签: Nginx
暂无评论,赶紧发表一下你的看法吧。