프로젝트 개발 및 배포 과정에서 인트라넷에 MySQL 또는 Oracle 데이터베이스를 설치하는 경우가 많은데, 우리의 애플리케이션 서비스는 외부 네트워크에만 배포할 수 있습니다.내부 네트워크에 연결된 데이터베이스에 외부 네트워크 서비스가 액세스하면 어떻게 될까요? 이번에는 Nginx 구성을 통해 외부 네트워크에서 인트라넷 데이터베이스에 액세스하는 방법을 소개합니다.
1. 프런트엔드 서버
우선, 내부 네트워크 데이터베이스에 액세스할 수 있을 뿐만 아니라 외부 네트워크를 통해 프런트 엔드 프로세서에 액세스할 수 있는 프런트 엔드 프로세서 서버가 있는지 확인해야 합니다. 그런 다음 이 프런트 엔드 서버에 ngxin을 설치 및 배포하여 데이터 프록시를 구현합니다.
2. ngxin 구성
여기서 ngxin 설치 및 배포는 생략하고 관심있는 분들은 바이두에서 해결하시면 됩니다. 여기에서는 주로 데이터 흐름 에이전트를 구성하는 방법을 소개합니다. nginx.conf 구성 내용은 다음과 같습니다.
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
stream {
upstream oracle {
server 192.168.0.1:1521; #原oracle地址
}
upstream mysql {
server 192.168.1.102:3306;
}
server {
listen 3335;# 反向代理后监听的端口,nginx启动后访问192.168.21.100:3335就可以访问到oracleA
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass oracle;
}
server {
listen 8888;# 反向代理后监听的端口
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass mysql;
}
}
구성을 수정한 후 nginx를 다시 시작한 다음 외부 네트워크 IP 및 포트를 통해 프런트 엔드 프로세서에 액세스합니다. 이는 내부 네트워크 데이터베이스에 직접 액세스하는 것과 같습니다.
3. 테스트 검증
Navicat과 같은 데이터베이스 클라이언트 연결 도구를 통해 테스트할 수 있습니다. 아래 그림의 예는 포트 8888을 통해 포트 3306에서 데이터베이스에 액세스하는 것입니다.