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;
                }
}
相关推荐
姜鱼问生2 分钟前
三层防火墙排查:Nginx 配好了浏览器还打不开
nginx·安全
打工仔折腾 AI42 分钟前
飞牛OS上用Docker Compose部署ExerciseDiary运动记录并配置远程访问
运维·人工智能·后端·python·docker·容器·ai agent 实战
天远数科1 小时前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化买手实名核验网关
运维·人工智能·架构·自动化
天衍四九-1 小时前
Docker Compose企业实战系列(八·终章):多环境隔离实战,开发/测试/生产一键切换
运维·docker·容器
IT大白鼠2 小时前
搜索系列 · 第 04 篇——部署实操:内网集群落地
运维·elasticsearch·nosql
Elastic 中国社区官方博客2 小时前
使用 Jev 作为 search reranker:基准测试与实现方法
大数据·运维·elasticsearch·全文检索
红红谈说3 小时前
浏览器自动化环境老是起不来?依赖治理与启动自检的一次复盘
运维·自动化·浏览器自动化·进程残留·环境依赖·启动自检·版本比较
赵民勇3 小时前
glib-compile-schemas命令详解
linux·运维
小小、码农3 小时前
〖Linux进程间通信〗IPC全家桶:匿名管道、FIFO、共享内存、消息队列与信号量一篇打通
linux·运维·服务器
阳光九叶草LXGZXJ3 小时前
达梦数据库-学习-67-SSL加密认证
linux·运维·数据库·sql·学习·ssl