基于Docker的Nginx部署教程
本教程基于Docker部署Nginx,演示部署Nginx的版本为1.22.0,操作系统为CentOS7,其部署方式包括以下两种方式:
- 单机部署
- 自定义配置模块部署
什么是Nginx
Nginx (engine x) 是一款高性能、轻量级、稳定性高、并发性好的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 广泛应用于Http服务、负载均衡、反向代理等实用场景。其配置简单、配置语法简洁,社区活跃,学习成本低等优点,使其成为最受欢迎的的服务器应用之一。
部署前的注意
在进行部署之前,最好对服务器的防火墙进行相关处理,命令如下,请按需使用
# 开放8888端口,端口自定义,我这里以8888为例
firewall-cmd --zone=public --add-port=8888/tcp --permanent
#关闭8888端口
firewall-cmd --zone=public --remove-port=8888/tcp --permanent
# 配置立即生效
firewall-cmd --reload
# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --list-all
# 关闭防火墙 如果不想管控端口,直接关闭系统防火墙,啥都能通,但安全性不强,不建议。
systemctl stop firewalld.service
systemctl start firewalld.service
systemctl restart firewalld.service
# 查看防火墙状态
firewall-cmd --state
# 查看监听的端口
netstat -lnpt
# 检查端口被哪个进程占用
netstat -lnpt | grep 8888
# 查看进程的详细信息
ps 8888
单机部署Nginx
拉取Nginx镜像
# 拉取Nginx镜像,版本使用1.22.0
docker pull nginx:1.22.0
# 查看拉取镜像
docker images
镜像拉取成功则如下图所示
创建主本地目录
# 创建配置目录
mkdir -p /data/nginx/conf
# 创建日志目录
mkdir -p /data/nginx/log
# 创建前端显示目录
mkdir -p /data/nginx/html
#对nginx本地文件进行递归赋权
chmod -R 755 /data/nginx
如下图
部署Nginx容器
1.生成容器
# 先简单启动容器
docker run -p 80:80 --name nginx -d nginx:1.22.0
# 进入容器内部
docker exec -it 容器id /bin/bash
2.复制容器配置到宿主机
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html/index.html /data/nginx/html
docker cp nginx:/usr/share/nginx/html/50x.html /data/nginx/html
3.重启容器
# 使用数据卷重启nginx容器
docker run -p 80:80 --name nginx -v /data/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html -d nginx:1.22.0
查看容器是否启动成功
4.测试验证
访问服务器ip:80端口(请先保证防火墙的端口已经打开,或者已经关闭),如下图所示,则安装成功。
5.Nginx配置
进入本地宿主机配置目录,由于我们启用的是include模式,所以在内部创建了conf.d目录
我们设置一个简单测试的配置,默认只有一个default.conf
配置文件,如果有其他配置需要可以在conf.d目录下继续添加配置,我们在这里增加一个mydoc.conf
的配置文件
配置mydoc.conf
server {
listen 8001;
listen [::]:8001;
server_name localhost;
location / {
root /usr/share/nginx/html/mydoc;
index index.html index.htm;
}
}
配置default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html/home;
index index.html index.htm;
}
#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/home;
}
# 配置mydoc的测试代理
location /mydoc {
proxy_pass http://127.0.0.1:8001/;
proxy_set_header Host $host;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html/mydoc;
# #fastcgi_pass 127.0.0.1:9000;
# fastcgi_pass 192.168.2.103:9000;
# fastcgi_index index.php;
# #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
### 那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
* 并发编程面试题汇总
* JVM面试题汇总
* Netty常被问到的那些面试题汇总
* Tomcat面试题整理汇总
* Mysql面试题汇总
* Spring源码深度解析
* Mybatis常见面试题汇总
* Nginx那些面试题汇总
* Zookeeper面试题汇总
* RabbitMQ常见面试题汇总
JVM常频面试:
![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/6c6aa231ae6c945cde3da1aa5a4975c3.webp?x-oss-process=image/format,png)
Mysql面试题汇总(一)
![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/6b412770c2b660a330d8e047e5aae2ed.webp?x-oss-process=image/format,png)
Mysql面试题汇总(二)
![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/dd4e477da304a4acf8d3075078f10fe8.webp?x-oss-process=image/format,png)
Redis常见面试题汇总(300+题)
![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/c83b54b89cca8890f1ef2f1b9a9dabce.webp?x-oss-process=image/format,png)
* Zookeeper面试题汇总
* RabbitMQ常见面试题汇总
JVM常频面试:
[外链图片转存中...(img-IRdYbVmO-1714652118007)]
Mysql面试题汇总(一)
[外链图片转存中...(img-X8bvG0Il-1714652118008)]
Mysql面试题汇总(二)
[外链图片转存中...(img-nMfyA0Hm-1714652118008)]
Redis常见面试题汇总(300+题)
[外链图片转存中...(img-YQ0H9BI1-1714652118009)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**