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
容器
Nginx
[[email protected] /]# docker run -id --name=nginx -p80:80 4bb46517cac3(镜像ID)
这个时候就可以访问,看看是否正常启动。
1.2 登录进去 Nginx
容器
Nginx
[[email protected] /]# docker exec -it f5be6c7819a9(容器ID) /bin/bash
退出使用查看文件使用命令
exit
ls
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lR47vXj-1599537851355)(https://s1.ax1x.com/2020/09/07/wuY28S.jpg)]
可以,可以看到相关的nginx配置文件都在
cd /etc/nginx
目录下, 而
/etc/nginx
容器内的默认首页html文件目录为
nginx
,日志文件位于
/usr/share/nginx/html
这样对于需要频繁修改
/var/log/nginx
nginx
配置文件来说很不友好。
下面使用目录挂载的方式来启动容器。
2.0 使用目录挂载方式启动 Nginx
容器
Nginx
将nginx容器内部配置文件挂载到主机,之后就可以在主机对应目录修改即可。适合频繁修改,复杂使用的情况。
2.1 创建3个对应文件夹
在容器外部创建3个对应文件夹。 我这里创建在 /usr/local/
[[email protected] local]# mkdir -p ./nginx/{html,logs}
2.2 将容器内部配置文件对应拷贝到创建的文件夹下面
执行下面命令进行拷贝, docker cp 容器ID:需要拷贝的文件 拷贝到那里(./代表当前目录下)
[[email protected] local]# docker cp f5be6c7819a9:/etc/nginx ./
2.3 停止之前的 Nginx
容器,并进行删除
Nginx
[[email protected] local]# docker stop f5be6c7819a9
[[email protected] local]# docker rm f5be6c7819a9
2.4 启动目录挂载的 Nginx
容器
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
地址
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
这里有个坑自己被坑蛮久的。 之前一直proxy_pass http: 写的是
docker restart 容器ID
127.0.0.1
IP地址,一直访问不上。
或者直接写外部公网可以访问项目的
ip地址加端口(http://47.115.80.6:8080/)
3.0 其他Nginx配置看之前的一样配就可以了!
1