天天看点

Docker安装、配置Nginx(学习笔记2020.09.06)Docker安装、配置Nginx(学习笔记2020.09.06)

Docker安装、配置Nginx(学习笔记2020.09.06)

1.0 获取Nginx

# 搜索nginx镜像
[[email protected] /]# docker search nginx
# 下载最新nginx镜像
[[email protected] /]# docker pull nginx
# 查看本地镜像是否下载成功
[[email protected] /]# docker images nginx
           

1.1 创建(启动)

Nginx

容器

[[email protected] /]# docker run -id --name=nginx -p80:80  4bb46517cac3(镜像ID)
           
这个时候就可以访问,看看是否正常启动。

1.2 登录进去

Nginx

容器

[[email protected] /]# docker exec -it f5be6c7819a9(容器ID)  /bin/bash
           
退出使用

exit

查看文件使用命令

ls

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lR47vXj-1599537851355)(https://s1.ax1x.com/2020/09/07/wuY28S.jpg)]

可以

cd /etc/nginx

,可以看到相关的nginx配置文件都在

/etc/nginx

目录下, 而

nginx

容器内的默认首页html文件目录为

/usr/share/nginx/html

,日志文件位于

/var/log/nginx

这样对于需要频繁修改

nginx

配置文件来说很不友好。

下面使用目录挂载的方式来启动容器。

2.0 使用目录挂载方式启动

Nginx

容器

将nginx容器内部配置文件挂载到主机,之后就可以在主机对应目录修改即可。适合频繁修改,复杂使用的情况。

2.1 创建3个对应文件夹

在容器外部创建3个对应文件夹。 我这里创建在

/usr/local/

[[email protected] local]# mkdir -p ./nginx/{html,logs}
           
Docker安装、配置Nginx(学习笔记2020.09.06)Docker安装、配置Nginx(学习笔记2020.09.06)

2.2 将容器内部配置文件对应拷贝到创建的文件夹下面

执行下面命令进行拷贝,

docker cp 容器ID:需要拷贝的文件 拷贝到那里(./代表当前目录下)

[[email protected] local]# docker cp f5be6c7819a9:/etc/nginx ./
           
Docker安装、配置Nginx(学习笔记2020.09.06)Docker安装、配置Nginx(学习笔记2020.09.06)

2.3 停止之前的

Nginx

容器,并进行删除

[[email protected] local]# docker stop f5be6c7819a9
[[email protected] local]# docker rm f5be6c7819a9
           

2.4 启动目录挂载的

Nginx

容器

运行以下命令进行目录挂载

-v

(一段一段的复制过去!) (前面是虚拟机文件路径: 容器路径)
[[email protected] local]# docker run -id --name=nginx -p80:80 -v /usr/local/nginx:/etc/nginx 
-v /usr/local/nginx/logs:/var/log/nginx -v /usr/local/nginx/html:/usr/share/nginx/html
--privileged=true 4bb46517cac3
           

2.5 进行访问

第一次访问,发现页面出现了403, 这是因为我们挂载的

html

文件夹还是空白的,

我们上传之前

linux

下学习的

nginx

配置页面上去在访问,

是否看到欢迎页面! 看到说明正常启动!

2.6 进行反向代理

2.6.1 查看docker容器内部

IP

地址

并找到

docker0

容器内部

IP

地址
[[email protected] local]# ifconfig
           

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zg9RbxmW-1599537851370)(https://s1.ax1x.com/2020/09/08/wMw6PA.jpg)]

本宿主机挂载的

nginx.config

配置文件增加

service

节点
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;
	
	server {
    listen       80;
    #域名可以有多个,用空格隔开
    server_name  zhihao.free.idcfengye.com;

    location / {
        # 请注意此处是容器内部IP, 我们访问的项目是容器内部项目, 外部就写外部ip
		proxy_pass http://172.17.0.1:8080/; 
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header X-Real-IP $remote_addr;
		#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
	
    error_page   500 502 503 504  /50x.html;
	
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
  }
  
}
           
配置好后, 重启

nginx

容器

docker restart 容器ID

这里有个坑自己被坑蛮久的。 之前一直proxy_pass http: 写的是

127.0.0.1

IP地址,一直访问不上。

或者直接写外部公网可以访问项目的

ip地址加端口(http://47.115.80.6:8080/)

3.0 其他Nginx配置看之前的一样配就可以了!

1