如何解决具有 2 个服务器的 nginx 反向代理
所以我遇到了一个很酷的项目,我想重新创建它。这是我第一次使用 nginx,也是我第一次学习有关反向代理的知识。我目前正在运行一个反向代理并且它可以工作(我猜)。但代理目前仅适用于其他端口。我有 3 台运行 nginx 的服务器。我使用其中之一作为我的反向代理。我可以使用不同的端口访问其他服务器。看这里(reverse-proxy.conf):
server {
listen 80;
root /var/www/html;
server_name localhost;
location / {
proxy_pass http://192.168.2.20;
}
}
server {
listen 8080;
root /var/www/html;
server_name localhost;
location / {
proxy_pass http://192.168.2.30;
}
}
有没有办法在不使用不同端口的情况下使用反向代理?或者我的解决方案好吗?最后,我只需要一个能够与其他 2 个服务器通信的反向代理。
解决方法
这里有一件事人们以不同的方式使用反向代理
但最通用的用例是使用位置重定向。
请找到以下示例。
server {
listen 80;
root /var/www/html;
server_name localhost;
location /a {
proxy_pass http://192.168.2.20;
}
location /b {
proxy_pass http://192.168.3.20;
}
}
另一个是为每个代理提供 weight。
请找出下面的例子
stream {
upstream stream_backend {
server http://192.168.2.20 weight=75;
server http://192.168.3.20 weight=25;
}
server {
listen 80;
root /var/www/html;
server_name localhost;
location / {
proxy_pass stream_backend;
}
}
在上面 192.168.2.20 将接收 75% 的负载,192.168.3.20 将接收 25% 的负载。如果您想将相等的负载分配给两者(或 round-robin method),请移除重量。
,我想你可能不明白 Nginx 是如何处理代理的。 Nginx 可以反向代理 L7 http 或 L4 流 并设置代理侦听所需的任何端口或 URL,并代理到所需的任何服务器、端口或 URL。
server {
listen 80;
root /var/www/html;
server_name localhost;
location / {
proxy_pass http://192.168.2.20:2323/URL;
}
}
server {
listen 8080;
root /var/www/html;
server_name localhost;
location / {
proxy_pass unix:/tmp/backend.socket;
}
}
这是有关 proxy_pass 指令的参考资料。 proxy_pass
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。