简介
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器.
最常用的两个功能是反向代理和负载均衡.
反向代理
反向代理是正向代理的反面.
普通的代理服务器是需要用户主动去设置的, 用户在自己的电脑上设置并连接代理服务器, 从而可以隐藏自己的 IP, 使得应用服务器不知道客户端的 IP 地址.
而反向代理是作为应用服务器的代理, 安装在服务器上. 客户端实际上访问的反向代理服务器, 反向代理服务器再去访问实际的应用服务器, 然后将获取到的响应传送给客户端.
使用 Nginx 配置反向代理非常简单, 基础配置如下:
upstream web {
server 127.0.0.1:8081;
}
server {
listen 80;
server_name web.coolcat.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 5m;
proxy_pass http://web;
}
}
上面的配置文件中设置了一个域名 web.coolcat.com
, 对这个域名的所有请求都会转发到 http://web
上.
通过配置 upstream
, 我们可以发现, 实际上的流量都被转发到了 127.0.0.1:8081
上了.
如此一来, 就实现了反向代理.
负载均衡
负载均衡和反向代理是分不开的, 负载均衡通常都是基于反向代理做的.
所谓的负载均衡, 指的是将多个请求转发到不同的后端服务器上.
upstream web {
server 127.0.0.1:8081;
}
在上面的反向代理配置中, 只设置了一个后端服务器地址, 如果再添加几个, 就实现了最简单的负载均衡了.
轮询
轮询策略按顺序分配请求.
upstream web {
server 192.168.1.1:8081;
server 192.168.1.2:8081;
}
加权轮询
加权策略按比例分配请求.
upstream web {
server 192.168.1.1:8081 weight=4;
server 192.168.1.2:8081 weight=6;
}
上面的两个服务器的访问概率就是四六开.
最少连接
最少连接将请求分配给当前连接数最少的服务器.
upstream web {
least_conn;
server 192.168.1.1:8081;
server 192.168.1.2:8081;
}
ip_hash
来自同一个 IP 的连接都会分配给同一个服务器, 通常用于 会话保持
.
upstream web {
ip_hash;
server 192.168.1.1:8081;
server 192.168.1.2:8081;
}
通用 hash
使用 hash 自定义要计算的 key. 示例中使用请求地址. 可以选择 consistent
参数可以指定使用一致性哈希算法.
upstream web {
hash $request_uri;
# hash $request_uri consistent;
server 192.168.1.1:8081;
server 192.168.1.2:8081;
}
参考:
总结
Nginx 是很常用的代理服务器, 它的功能非常强大, 性能也很好. 更多的资料请参考 官方文档.
当前部分的代码
作为版本 v0.14.0
今天的文章使用 Go 添加 Nginx 代理分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/17024.html