ubuntu+docker搭建nginx反向代理

nginx在我們的工作中是常用的反向代理服務(wù),今天叫大家在ubuntu上使用docker鏡像搭建nginx反向代理。
本文是基于一個(gè)服務(wù)來(lái)實(shí)現(xiàn)的,notifyserver是我自己寫的一個(gè)郵件通知服務(wù),基本架構(gòu)如下:


圖片.png

API GW是基于go-micro搭建的api網(wǎng)關(guān),(如何搭建請(qǐng)移步:http://www.itdecent.cn/p/13d1df6e6731

etcd是服務(wù)發(fā)現(xiàn),(如何搭建請(qǐng)移步:http://www.itdecent.cn/p/ec0e4911236d

notifyserver實(shí)現(xiàn)的主要功能是發(fā)送郵件驗(yàn)證碼(4位隨機(jī)碼),以及驗(yàn)證。

驗(yàn)證碼過(guò)期通過(guò)redis控制,設(shè)置5分鐘過(guò)期時(shí)間。

代碼這里不展示了,自己寫個(gè)server就OK了

下面開始搭建nginx

拉取nginx鏡像
docker pull nginx:latest
nginx配置

鏡像拉取完成后,我們下面編寫nginx配置。
原始配置是這樣的

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

創(chuàng)建 nginx.conf文件,添加如下配置,可按自己的需求修改。
我們需要在此配置中加入自己server的配置,修改得地方如下,在倒數(shù)第二行的位置:

 user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

#這里是新增的配置
    upstream tutor{
        server 192.168.109.132:8080;
   }
   server {
        listen   80;   #監(jiān)聽端口
        server_name www.tutor.com;
        location /{
                proxy_pass http://tutor;
        }

   }

   include /etc/nginx/conf.d/*.conf;
}

這里我們加入了upstream,設(shè)置名稱為tutor,
注意:這里的名稱需要與下文proxy_pass保持一致,否則無(wú)法訪問到

有關(guān)upstream的解釋可以看這個(gè)帖子:http://tengine.taobao.org/book/chapter_5.html

upstream 是完成構(gòu)造請(qǐng)求和解析響應(yīng)的功能,我們?cè)O(shè)置upstream 的server 為192.168.109.132:8080,這個(gè)是我API GW的地址和端口,如果不用API GW,可以設(shè)置成你自己server的地址和端口。

下面這段是完成訪問的導(dǎo)航,
監(jiān)聽端口我們?cè)O(shè)置為80,
server_name是 我們?cè)L問該server 的域名,
location 是用來(lái)匹配我們?cè)L問的server url

所以,這個(gè)配置,就把www.tutor.com 指向了192.168.109.132:8080這個(gè)地址

server {
        listen   80;   #監(jiān)聽端口
        server_name www.tutor.com;
        location /{
                proxy_pass http://tutor;
        }

如果你要用負(fù)載均衡功能,可以在upstream添加其他的地址,也可以根據(jù)情況設(shè)置權(quán)重,nginx的負(fù)載均衡支持輪詢,加權(quán),ip hash 以及擴(kuò)展策略。

啟動(dòng)nginx

上述的配置,按照自己的設(shè)置,配置好以后,保存在ubuntu的文件夾,我的保存在/home/kay/nginx/nginx.conf,用下面的指令啟動(dòng)nginx,(2622e6cca7eb是我的nginx鏡像,你需要換成你自己的,使用docker images即可查看鏡像的ID)

docker run --name nginx -d  -p 80:80 -v /home/kay/nginx/nginx.conf:/etc/nginx/nginx.conf  2622e6cca7eb

/etc/nginx/nginx.conf 是nginx鏡像內(nèi)的配置,我們直接用剛剛自己的配置覆蓋原配置即可。

到此nginx就配置完成了,
還有一步,就是在自己電腦的host 中添加如下設(shè)置

192.168.109.132 www.tutor.com 

這樣通過(guò)www.tutor.com加上你的server url就可以,訪問到自己的sever了。是我自己的虛擬機(jī)ip,你需要改成自己的機(jī)器的ip

最后編輯于
?著作權(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ù)。

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