美文网首页
Nginx 入门

Nginx 入门

作者: 扬州慢_ | 来源:发表于2018-09-30 09:53 被阅读124次

    Docker 部署 Nginx

    docker container run \
      -d \
      -p 8099:80 \
      --name mynginx \
      nginx
    

    以上命令会部署一个 nginx 容器, 各参数含义:

    • -d
      后台运行
    • -p 8099:80
      容器的 80 端口映射宿主的 8099 的端口
    • --name mynginx
      指定容器的名字为 mynginx

    部署成功后,访问 IP:8099 ,即可看到 nginx 的默然欢迎页。

    挂载宿主目录

    Nginx 容器的默认配置文件位于 /etc/nginx/conf.d/default.conf,其默认配置的地址为 /usr/share/nginx/html/index.html

    为了更加直观地看到是否成功挂载目录,我们新建一个 html 文件代替 Nginx 的默然欢迎页。

    首先在宿主中新建目录 mkdir /nginx-demo/html/,并在该目录下新建一个 html 文件 vim index.html,输入 <h1>Hello World</h1> 并保存。重新运行一下容器:

    docker container run \
      -d \
      -p 8099:80 \
      -v /nginx-demo/html/:/usr/share/nginx/html \
      --rm \
      --name mynginx \
      nginx
    

    现在访问 IP:8099 应该就可以看到 hello world 了。 -v 宿主目录:容器目录 命令即可实现目录挂载。

    映射配置目录

    把容器 mynginx 的 /etc/nginx 拷贝到宿主 /nginx-demo/conf 目录

    docker cp mynginx:/etc/nginx /nginx-demo/conf 
    

    可以把配置修改后再挂载到容器中,已解决 Nginx 容器中无法使用 vim 命令的问题。

    代理其他容器

    连接容器 --link tomcat001:t01

    -–link 表示当前命令启动的容器要和另一个名叫 tomcat001 的容器建立连接,tomcat001:t01 中的 t01 表示 t01 是连接建立后 tomcat001 的别名,或者可以理解为容器启动后,在容器的 /etc/hosts 文件中加入了一条记录,ip 是 tomcat001 的 ip,name 是 t01。

    我们输入 docke exec -it mynginx /bin/bash 登录 mynginx,再输入 cat /etc/hosts 即可看到 t01 指代的 ip 地址。

    另外在容器内使用 env 可查看环境变量

    T01_PORT_8080_TCP_PORT=8080 //可以看到容器t01端口为8080
    

    反向代理,负载均衡

    修改 /etc/nginx/con.f/default.conf 配置文件

    upstream mytomcat{
        //如果代理多个容器可以配置 weight 权重实现负载均衡
        server t01:8080 weight=1; 
    }
    
    server {
        ...
        location / {  
            # 注释之前的 root、index
            # 添加
            proxy_pass http://mytomcat;  
        }       
    }
    

    重新运行一下容器

    docker container run \
      -d \
      -p 8099:80 \
      -v /nginx-demo/html/:/usr/share/nginx/html \
      -v /nginx-demo/conf/:/etc/nginx \
      --rm \
      --name mynginx \
      --link tomcat001:t01 \
      nginx
    

    这时访问 IP:8099 已不再指向原来的 hello world 页面,而是反向代理到了 tomcat 的主页。

    其他

    docker 已关闭,却依然可以访问 nginx 页面?

    可能是浏览器缓存

    代理宿主机

    一番操作后突然想到,直接在部署 nginx 时映射主机的 80 端口不就可以了 (:з」∠)

    参考

    阮一峰 Nginx 容器教程 等等

    相关文章

      网友评论

          本文标题:Nginx 入门

          本文链接:https://www.haomeiwen.com/subject/vdiywftx.html