常见内网系统网络结构及nginx代理配置

系统网络结构图及nginx配置

1.系统网络结构图

传统公司服务部署网络都会分区,应用都部署在内网区,请求通过dmz区转出内网与互联网发生交互。

结构图详解:

  1. 请求从互联网经过层层转发到内网中
  2. 后台服务需要访问数据库及中间件;网关需要访问redis
  3. 内网可以访问管理后台
  4. 管理后台需要调用后台服务支持

如果需要开通网络策略及端口,参考上面的访问路线。

2.Nginx网络配置

2.1请求从互联网区访问到内网区

说明:下面是一个简图,只代表网络交互,实际部署时会有多层负载

流程简要描述:

1.请求通过互联网区访问DMZ区nginx,所以DMZ区的nginx需要暴露一个端口供外网访问。这里通常做法都是提供一个域名供互联网访问,端口如果是http就是80,如果是https就是443.

2.DMZ区的nginx将请求发送到内网区的nginx后,有内网区的nginx做负载发送内网微服务集群

示例nginx配置:

1.互联网请求访问dmz区的nginx配置

powershell 复制代码
server {
	listen 80;
	server_name	yyds.abc.com;
	access log /data/1ogs/nginx/in_yyds.abc.com.access.log; 
	error log /data/1og3/nginx/in_yyds.abc.com.error.log; 
		
	location /aa/ {
		proxy_pass http://127.0.0.1:8080/;
		proxy_pass_header User-Agent;
		proxy_set_header Host $host; 
		proxy_set_header X-Real-IP $http_x_forwarded_for;
		proxy_set_header x-Forwarded-For $http_x_forwarded_for; 
	}
	
	location /aa/bb/ {
		proxy_pass http://app_nginx_server/:   #app_nginx_server为appnginx所在机器ip
		proxy_pass_header User-Agent; 
		proxy_set_header Host bb.app.com; 
		proxy_set_header X-Real-IP $http_x_forwarded_for; 
		proxy_set_header X-Forwarded-For $http_x_forwarded_for;
		proxy_http_version 1.1; 
		proxy_set_header Upgrade $http_upgrade; 
		proxy_set_header Connection "upgrade"; 
	}
	
	location /cc/dd/ee {
		return 404;
	}

	#静态图片
	location /ee/static-img/ {
		root /ff/gg/hh/; 
	}
 }

2.dmz区nginx配置2,用来对1中的请求细化

powershell 复制代码
server {
		listen 8080; 
		server_name yyds.abc.com;  #这里是接受80端口转发过来的请求
		access_log /data/logs/nginx/yyds.abc.com.access.log; 
		error_log /data/logs/nginx/yyds.abc.com.error.log; 
		
		root 前台代码路径/dist;
		index index.html index.htm index.php;
		
		
		location /aa/ {
		proxy_pass http://app_nginx_server/yy/uu;   #app_nginx_server为appnginx所在机器ip
		proxy_pass_header User-Agent;
		proxy_set_header Host 微服务网关域名;
		proxy_set_header X-Real-IP $http _x_forwarded_for;
		proxy_set_header X-Forwarded-For $http_x_forwarded_for;
		}
		
		location /rr/  {
		proxy_pass http://app_nginx_server; 
		proxy_set_header Host gateway.app.com;
		proxy_set_header X-Real-IP $http_x_forwarded_for;
		proxy_set_header X-Forwarded-For $http_x_forwarded_for;
		}
}

2.2 请求从内网访问互联网

流程简要描述:

1.微服务中涉及到需要访问互联网资源的请求,通过nginx配置的域名,服务先将请求打到appnginx,再通过appnginx转到webnginx,两个nginx还是开放80端口,通过不同的域名和路径转发

2.DMZ区的nginx将请求发送具体的外部资源所在地址

1 微服务将请求转发到appnginx

powershell 复制代码
server{
		listen 80; 
		server_name app.nginx.com;
		$http user_agent;
		access_1og /data/logs/nginx/out web.nginx.com.access.log;
		error_log /data/1ogs/nginx/out web.nginx.com.error.1og; 
		
		location /api_weixin/ {
				proxy_pass https://web.nginx.com/
				proxy_set_header X-Real-IP $remote_addr; 
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
				proxy_set_header X-Forwarded-Proto $scheme: 
				proxy_redirect off; 
		}
		
		location /open_weixin/ {
				proxy_pass https://web.nginx.com/
				proxy_set_header X-Real-IP $remote_addr; 
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
				proxy_set_header X-Forwarded-Proto $scheme: 
				proxy_redirect off; 
		}
}

2.dmz区nginx请求访问出去的配置

powershell 复制代码
server{
		listen 80; 
		server_name web.nginx.com;
		$http user_agent;
		access_1og /data/logs/nginx/out web.nginx.com.access.log;
		error_log /data/1ogs/nginx/out web.nginx.com.error.1og; 
		
		location /api_weixin/ {
				proxy_pass https://api.weixin.qq.com/
				proxy_set_header X-Real-IP $remote_addr; 
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
				proxy_set_header X-Forwarded-Proto $scheme: 
				proxy_redirect off; 
		}
		
		location /open_weixin/ {
				proxy_pass https://open.weixin.qq.com/
				proxy_set_header X-Real-IP $remote_addr; 
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
				proxy_set_header X-Forwarded-Proto $scheme: 
				proxy_redirect off; 
		}
}
相关推荐
Johnstons1 分钟前
网络诊断工具怎么选:从监控告警到抓包定位的完整方法论
服务器·网络·php·es·抓包分析·网络诊断工具选型与排障方法
senijusene7 分钟前
基于 Linux SPI 子系统的 ADXL345 加速度传感器驱动开发
linux·运维·驱动开发
H_老邪34 分钟前
CentOS 9 解决 root 登录及重置密码指南
linux·运维·centos
Full Stack Developme38 分钟前
Linux CURL 教程
linux·运维·chrome
Lumos_7771 小时前
Linux -- 共享内存
java·linux·运维
李日灐1 小时前
<5> Linux 开发工具:包管理 + Vim 实操 + GCC 编译流程 + 静态与动态链接详解
linux·运维·服务器·面试·vim·gcc
aq55356001 小时前
GitSubmodule深度避坑指南
java·开发语言·php
sdm0704271 小时前
深刻理解进程信号
linux·运维·服务器
数智化精益手记局1 小时前
什么是安全生产?解读安全生产的基本方针与核心要求
大数据·运维·人工智能·安全·信息可视化·自动化·精益工程
scheduleTTe2 小时前
Nginx
服务器·前端·nginx