nginx 轉(zhuǎn)發(fā)到mysql

實(shí)測(cè)一下代碼放在/etc/nginx/nginx.conf最后面,在yunip編譯版本的nginx上可以成功連接到mysql (在apt安裝的nginx版本不行,nginx version: nginx/1.4.6 (Ubuntu)):

stream {

server {

listen 23306;

proxy_pass winip:3307;

# 也支持socket

# proxy_pass unix:/var/lib/mysql/mysql.socket;

}


nginx 詳細(xì)信息:

2032 $ nginx -V

nginx version: nginx/1.12.1

built with OpenSSL 1.0.1f 6 Jan 2014

TLS SNI support enabled

configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-0QJgRe/nginx-1.12.1/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-0QJgRe/nginx-1.12.1/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-0QJgRe/nginx-1.12.1/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-0QJgRe/nginx-1.12.1/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-0QJgRe/nginx-1.12.1/debian/modules/ngx_http_substitutions_filter_module

補(bǔ)充內(nèi)容:

編譯安裝Nginx

從1.9.0開始,nginx就支持對(duì)TCP的轉(zhuǎn)發(fā),而到了1.9.13時(shí),UDP轉(zhuǎn)發(fā)也支持了。提供此功能的模塊為ngx_stream_core。不過Nginx默認(rèn)沒有開啟此模塊,所以需要手動(dòng)安裝。

cd /usr/local/src

wget http://nginx.org/download/nginx-1.12.1.tar.gz

tar zxf nginx-1.12.1.tar.gz

cd nginx-1.12.1

./configure --prefix=/usr/local/nginx --with-stream --without-http

make && make install

參考:

http://www.itdecent.cn/p/244386221cc5

補(bǔ)充tcp轉(zhuǎn)發(fā):

背景:如果nginx代理這個(gè)80到swoole(用swoole做webserver,其實(shí)就是做個(gè)轉(zhuǎn)發(fā)和html解析。),這個(gè)代理是個(gè)什么概念,那這個(gè)socket的fd是不是就沒法長(zhǎng)連接了呢??被反向80端口代理的swoole還能長(zhǎng)連接?用:nginx_tcp_proxy_module才行 ,否則肯定不行啊,即使http的keep-alive,https://github.com/yaoweibin/nginx_tcp_proxy_module 也就是說nginx的http代理長(zhǎng)連接不行,得走tcp這一層才行,用haproxy。

nginx屬于七層架構(gòu),支持的是http協(xié)議,本身對(duì)tcp協(xié)議沒有支持。所以不能代理mysql等實(shí)現(xiàn)負(fù)載均衡。但是lvs這個(gè)東西不熟悉,主要是公司的的負(fù)載均衡都是nginx所以決定研究一下nginx的這個(gè)功能實(shí)現(xiàn),下面簡(jiǎn)單介紹一下實(shí)現(xiàn)方法:

1.下載module模塊

下載地址 : https://nodeload.github.com/yaoweibin/nginx_tcp_proxy_module/zipball/master

$ wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'

$ tar -xzvf nginx-1.2.1.tar.gz

$ cd nginx-1.2.1/

$ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch??/path是指nginx_tcp_proxy_module路徑

$??./configure --add-module=/usr/local/ngx_cache_purge-1.4??--prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/path/to/nginx_tcp_proxy_module?? //編譯

$ make

$ make install

2、修改nginx配置文件:

http {

server {

listen 80;

location /status {

check_status;

}

}

}

tcp {

upstream mysql{

server 10.10.10.17:3306 weight=1;

server 10.10.10.18:3306 weight=1;

#check interval=3000 rise=2 fall=5 timeout=1000;

}

server {

listen 3306;

proxy_pass mysql;

}

}

參考:? http://ju.outofmemory.cn/entry/124180

對(duì)比:

tcp {

upstream mysql {

server 172.17.0.3:3306 weight=1;

#check interval=3000 rise=2 fall=5 timeout=1000;

}

server {

listen 23306;

proxy_pass mysql;

}

}


stream {

server {

listen 23306;

proxy_pass 60.205.189.32:3307;

# 也支持socket

# proxy_pass unix:/var/lib/mysql/mysql.socket;

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容