使用Docker容器运行Nginx并实现反向代理

使用Docker容器运行Nginx并实现反向代理

推荐使用 docker-compose 定义和运行多容器,本文实践时,尚未使用 docker-compose ;

1.安装nginx镜像与运行容器

1.拉取镜像
# 本文使用nginx镜像: nginx:alpine

sudo docker pull nginx:alpine 
2.准备映射文件
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf.d

# 准备默认初始页、错误页、默认配置文件,置放于相应目录下
~/nginx/www/index.html 
~/nginx/www/50.html
~/nginx/conf.d/default.conf 
3.创建nginx容器
docker run -d -p 80:80 \
 --name nginx-web \
 -v ~/nginx/www:/usr/share/nginx/html \
 -v ~/nginx/conf.d:/etc/nginx/conf.d \
 -v ~/nginx/logs:/var/log/nginx \
 nginx:alpine

2.实现反向代理

本文以代理gitlab容器为例说明,gitlab容器映射端口:5080;

1.创建相应配置文件
cd ~/nginx/conf.d
touch gitlab.conf
2.代理的程序的IP地址
# docker inspect : 获取容器/镜像的元数据

# 通过以下命令获取到容器IP地址, 如: 172.17.0.2
sudo docker inspect gitlab | grep 'IPAddress'
3.添加相应配置
  1. 如下配置中,server可设置为被代理容器的虚拟IP:PORT,或服务器真实IP:PORT
  2. 若使用服务器真实IP:PORT,则需要对外开放相应端口,否则无须对外开放相应端口;
  3. 该处设置不能设置为 127.0.0.1:5080localhost:5080 ,因其皆不等同于服务器真实IP
upstream gitlab {
	#被代理容器的虚拟IP:PORT 或 服务器真实IP:PORT
    server 172.17.0.2:80; 
}

server {
    listen       80;
    listen  [::]:80;
    server_name  xxx.xxx.xx;

    #access_log  /var/log/nginx/host.access.log  main;
    server_name_in_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


    location / {
        proxy_pass http://gitlab/;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
重启nginx服务
# 进入容器
sudo docker exec nginx-web /bin/sh

# 校验配置文件语法格式
nginx -t
# 重启nginx服务
nginx -s reload
# 退出
exit
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值