溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nginx如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)

發(fā)布時(shí)間:2023-03-07 11:56:36 來(lái)源:億速云 閱讀:164 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“nginx如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“nginx如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)”吧!

出于數(shù)據(jù)安全性考慮,正常情況下,網(wǎng)站或者項(xiàng)目的數(shù)據(jù)庫(kù)一般都是禁止外網(wǎng)訪問(wèn),或者只允許部分主機(jī)訪問(wèn)。那么,如何才能不修改這類權(quán)限的前提下,讓其他被禁止訪問(wèn)的主機(jī)也能訪問(wèn)這個(gè)數(shù)據(jù)庫(kù)呢。這時(shí),Nginx的作用就體現(xiàn)出來(lái)了。

1、mysql為例

oracle、sqlserver等數(shù)據(jù)庫(kù)配置和下面配置一樣,只是數(shù)據(jù)庫(kù)的端口不一樣而已
需要注意的是這個(gè)配置要寫在http外邊

#使用nginx做數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)
stream {
    upstream sql {   
    # 配置數(shù)據(jù)庫(kù)的ip和端口
        server 172.16.8.190:3306 weight=1 max_fails=2 fail_timeout=30s;   
    }
    server {
     # 配置本機(jī)暴露端口
       listen     925;
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass sql;
    }
}

2、完整配置如下

#user  nobody;#配置用戶或者用戶組,默認(rèn)為nobody
worker_processes  2;#允許生成的進(jìn)程數(shù),默認(rèn)為1

#制定日志路徑,級(jí)別。這個(gè)設(shè)置可以放入全局塊,http塊,server塊,
#級(jí)別以此為: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進(jìn)程運(yùn)行文件存放地址


events {
    worker_connections  1024;    #最大連接數(shù),默認(rèn)為512
    accept_mutex on;   #設(shè)置網(wǎng)路連接序列化,防止驚群現(xiàn)象發(fā)生,默認(rèn)為on
    multi_accept on;  #設(shè)置一個(gè)進(jìn)程是否同時(shí)接受多個(gè)網(wǎng)絡(luò)連接,默認(rèn)為off
    #use epoll;      #事件驅(qū)動(dòng)模型,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地址和訪問(wèn)端口
    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; # 編碼設(shè)置
    #開啟gzip壓縮
        #gzip模塊設(shè)置
        gzip on; #開啟gzip壓縮輸出
        gzip_min_length 1k; #最小壓縮文件大小
        gzip_buffers 4 16k; #壓縮緩沖區(qū)
        gzip_http_version 1.0; #壓縮版本(默認(rèn)1.1,前端如果是squid2.5請(qǐng)使用1.0)
        gzip_comp_level 2; #壓縮等級(jí)
        gzip_types text/plain application/x-javascript text/css application/xml;
        #壓縮類型,默認(rèn)就已經(jīng)包含text/html,所以下面就不用再寫了,寫上去也不會(huì)有問(wèn)題,但是會(huì)有一個(gè)warn。
        gzip_vary on;
        #charset koi8-r;
        #charset utf-8,gbk; # 避免中文亂碼
        #root    D:/htmlPage/dist; 
        #access_log  logs/host.access.log  main;
    location /{
        #這個(gè)地方指定被訪問(wèn)的文件夾位置
        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;
        }
     }
 }

感謝各位的閱讀,以上就是“nginx如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)nginx如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)端口轉(zhuǎn)發(fā)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI