正向代理:客户端
反向代理:服务端
主机连接正向代理
系统代理:所有的网络请求都会走代理。
软件:可以单独指定代理。
配置代理服务器
shell
# 修改Nginx配置文件的server
server {
resolver: 223.5.5.5;
listen: 80;
location / {
proxy_pass http://$host$request_uri;
proxy_set_header HOST $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;
}
}
此时的nginx就不代表一个网站了,只做请求转发,单纯的代理。该配置只代理的http协议,https不行。
反向代理
主要是为了保护源站
反向代理讲请求转发给服务器,服务器将响应结果回复给代理,再由代理响应给客户端。
反向代理还能做负载均衡,将大量的请求分发给服务器集群(多台服务器提供一个服务)。
shell
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
# 192.168.61.140是源站的IP地址 将收到的请求转发给192.168.61.140服务器
proxy_pass http://192.168.61.140;
# 设置host,防止请求域名丢失,不然代理服务器直接转发请求ip,会导致服务端不知道客户端真实访问的是哪个域名。
proxy_set_header Host $host;
# 设置真实ip地址记录,下面两个都是一个意思,实际中两个都会用。
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded_for $remote_addr;
}
}
}
负载均衡
在代理服务器的nginx配置文件的http中添加资源池,server的外面
shell
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
# 资源池
upstream web {
# 集群服务器中的两个ip
server 192.168.223.100;
server 192.168.223.100;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass htttp:// web; # 资源池的路径
}
}
}