Maison >Opération et maintenance >Nginx >Comment nginx implémente la redirection de port de base de données

Comment nginx implémente la redirection de port de base de données

王林
王林avant
2023-05-12 23:13:042102parcourir

En raison de considérations de sécurité des données, dans des circonstances normales, il est généralement interdit à la base de données d'un site Web ou d'un projet d'accéder au réseau externe, ou n'autorise l'accès qu'à certains hôtes. Alors, comment pouvons-nous permettre à d’autres hôtes interdits d’accès d’accéder à cette base de données sans modifier ces autorisations ? A cette époque, le rôle de Nginx se reflète.

1, mysql comme exemple

oracle, sqlserver et les autres configurations de base de données sont les mêmes que les configurations suivantes, sauf que les ports de base de données sont différents
Cela devrait à noter que cette configuration nécessite Écrit en dehors de http

#使用nginx做数据库端口转发
stream {
    upstream sql {   
    # 配置数据库的ip和端口
        server 172.16.8.190:3306 weight=1 max_fails=2 fail_timeout=30s;   
    }
    server {
     # 配置本机暴露端口
       listen     925;
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass sql;
    }
}

2 La configuration complète est la suivante

#user  nobody;#配置用户或者用户组,默认为nobody
worker_processes  2;#允许生成的进程数,默认为1

#制定日志路径,级别。这个设置可以放入全局块,http块,server块,
#级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;#指定nginx进程运行文件存放地址


events {
    worker_connections  1024;    #最大连接数,默认为512
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
}

stream {
    upstream sql {   
        server 172.16.8.190:3306 weight=1 max_fails=2 fail_timeout=30s;   
    }
    server {
       listen     925;
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass sql;
    }
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    #配置tomcat的IP地址和访问端口
    upstream tomcat {
        server 172.16.8.190:8080;
        
     }
    
    server {
        listen       9008;
        server_name  172.16.8.190;
    #header name含下划线
    underscores_in_headers on; 
    #charset gbk; # 编码设置
    #开启gzip压缩
        #gzip模块设置
        gzip on; #开启gzip压缩输出
        gzip_min_length 1k; #最小压缩文件大小
        gzip_buffers 4 16k; #压缩缓冲区
        gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
        gzip_comp_level 2; #压缩等级
        gzip_types text/plain application/x-javascript text/css application/xml;
        #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
        gzip_vary on;
        #charset koi8-r;
        #charset utf-8,gbk; # 避免中文乱码
        #root    D:/htmlPage/dist; 
        #access_log  logs/host.access.log  main;
    location /{
        #这个地方指定被访问的文件夹位置
        root   D:/htmlPage;
        index  index.html index.htm;
        #limit_rate 1280k; #限制速度
        client_max_body_size  100M;
        allow all;
        autoindex on;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header 'Access-Control-Allow-Headers' 'Content-Type';
        add_header 'Access-Control-Allow-Methods' 'GET';
        add_header 'Access-Control-Allow-Methods' 'POST';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Origin' '*';
        proxy_connect_timeout       600s;
        proxy_read_timeout          600s;
        proxy_send_timeout          600s; 
        access_log off;
        break;
        }
     }
 }
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer