Nginx正反向代理

需求

为了降低成本并提高效率,考虑对华为云服务器的网络架构进行重构

将原有的十一台云服务器公网IP整合为一台,部署 Nginx 作为公网服务器,并引入负载均衡器来分发流量。

Nginx正向代理

什么是正向代理?

  • 正向代理:指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。

  • 正向代理特点:是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。

  • 通俗易懂:没有公网IP的服务器要怎么样访问http://baidu.com

正向代理配置

在实现nginx正向代理之前,先说明一下,现在的网站基本上都是https,因此要实现nginx正向代理转发请求,除了要配置转发http80端口的请求,还有配置https443端口的请求~

正向代理转发http请求很简单,不过正向代理转发https请求稍微有一点麻烦,目前网上的教程大多都是如下这样配置的

bash 复制代码
server {

                listen 80;
                resolver 114.114.114.114;
                server_name localhost;

                location ^~ /dev {
                        proxy_pass http://xxx.sd-rtn.com;
                        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;
                }

                location ^~ /v3 {
                        proxy_pass http://xxx.amap.com;
                        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;
                }
}

验证正向代理

Linux下验证代理服务器是否能正常代理转发http和https请求

bash 复制代码
curl http://www.baidu.com/ -v -x 127.0.0.1:80
curl https://www.baidu.com/ -v -x 127.0.0.1:443

结果:成功

bash 复制代码
[root@nginx conf.d]# curl http://www.baidu.com/ -v -x 127.0.0.1:80
* About to connect() to proxy 127.0.0.1 port 80 (#0)
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET http://www.baidu.com/ HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 404 Not Found
< Server: nginx/1.24.0
< Date: Wed, 06 Mar 2024 09:33:04 GMT
< Content-Type: text/html
< Content-Length: 153
< Connection: keep-alive
< 
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.24.0</center>
</body>
</html>
* Connection #0 to host 127.0.0.1 left intact

Nginx反向代理

什么是反向代理

  • 反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

  • 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

  • 总结一句话:帮助客户端找到内部集群中的服务

反向代理配置

bash 复制代码
server {

                listen 7002;
                server_name localhost;

                location / {
                		# 反向代理真实 IP
                        proxy_pass http://192.168.xxx.xxx:7002;
        				proxy_http_version 1.1;
           				proxy_set_header Upgrade $http_upgrade;
           				proxy_set_header Connection "Upgrade";

           				
           				proxy_set_header Host $host;
           				proxy_set_header X-Real-IP $remote_addr;
           				proxy_set_header REMOTE-HOST $remote_addr;
           				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

           				# 禁用缓存
           				proxy_buffering off;
                }
}
相关推荐
乘云数字DATABUFF3 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--5 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森5 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜5 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB6 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode8 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220708 天前
如何搭建本地yum源(上)
运维
ping某9 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树8811 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠11 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql