Docker安装和配置Nginx
Nginx的作用
-
反向代理。举个例子,Nginx监听服务器上的80或443端口,客户端通过域名或ip请求到Nginx,Nginx通过请求的地址根据配置请求到具体的服务,然后将结果返回给客户端。
-
web服务器。将html,css,js,图片等文件通过nginx配置放在指定的目录下,如果有公网ip,能够实现公网对网页文件的访问。
-
负载均衡。nginx可以对请求做一个分发,分发到提供同一功能的多个服务器上,减轻单台服务器的压力。
-
黑名单。nginx可以对进来的请求ip做一个限制,在黑名单的ip的会拒绝请求。
-
限流。nginx可以限制ip访问的频率。
-
TCP流量代理。比如代理通过3306端口访问mysql的请求、websocket的请求。
Docker安装Nginx
创建一个docker网络:
docker network create --driver bridge --subnet 172.18.0.1/24 --gateway 172.18.0.1 txb-net
- --driver bridge:网络模式为桥接
- --subnet:子网范围。24的含义是子网掩码。不能和已存在的docker网络冲突
- --gateway:网关地址
- txb-net:网络名称。这个值任意
只有指定了子网范围,也就是带了--subnet参数的,才能在创建容器的时候指定ip。
创建网络作用是方便后面启动容器的时候指定ip,如果没有这一步,启动的容器的内网ip都是随机的,不方便管理,有的时候容器间通过内网ip访问,如果是随机生成的ip,在下次启动容器的时候ip会变,导致访问不到。
创建Nginx容器:
因为要挂载Nginx的配置文件和一些数据,所以需要先启一个Nginx容器把默认配置文件复制出来。如果复制出来的文件存放目录不存在,需要提前创建好。注意,
/usr/share/nginx/html/. 后面有一个点,表示复制/usr/share/nginx/html/下的所有文件,不过不加 . ,会把html文件夹复制到/home/txb/docker_data/nginx/html/ 目录下,也就是html文件夹下还有个html文件夹
docker run --name nginx -d nginx
docker cp nginx:/etc/nginx/nginx.conf /home/txb/docker_data/nginx/nginx.conf
docker cp nginx:/etc/nginx/conf.d/default.conf /home/txb/docker_data/nginx/conf.d/default.conf
docker cp nginx:/usr/share/nginx/html/. /home/txb/docker_data/nginx/html/
默认配置文件拷贝出来后,这个容器就可以删除了
docker stop nginx
docker rm nginx
重新启动一个Nginx的容器,指定网络和ip,并挂载数据
docker run --name nginx --network txb-net --ip 172.18.0.2 -p 80:80 -p 443:443 -v /home/txb/docker_data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/txb/docker_data/nginx/html:/usr/share/nginx/html -v /home/txb/docker_data/nginx/log:/var/log/nginx -v /home/txb/docker_data/nginx/conf.d:/etc/nginx/conf.d -d nginx
如果此时服务器开通的了80端口,直接访问 http://ip 就可以看到效果