本文记录初次学习nginx的心得,经过本人验证,是完全有效的!
一、下载Nginx镜像
因为本文是使用docker安装Nginx,所以没有用到apt、yum等包管理器。
如果你有docker desktop这类图形化界面,那么直接搜索下载官方Nginx最新镜像即可。


如果没有这类图形化界面,直接使用docker命令安装也是一样的。
docker pull nginx
默认拉取最新版本。
二、处理Nginx的配置文件
2.1 创建相关目录
conf目录存放配置文件,html为存放html资源的目录,log存放nginx 的日志文件,ssl目录存放ssl证书用于配置https。
mkdir -p /home/nginx/{conf,html,log}
2.2 启动Nginx
docker run --name nginx -d -p 9080:80 nginx:latest
2.3 拷贝相关Nginx配置文件
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf #复制配置文件
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx #复制基本的html界面
2.4 关闭并删除当前Nginx容器
docker stop nginx
docker rm nginx
2.5 重新运行
docker run --name nginx -p 9080:80 \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-d nginx:latest
有几个可选参数,根据自己实际情况添加:
-p 9443:443配置https端口映射
--privileged=true开启最高权限, 避免没有对应权限时报错
--restart=always自启动
2.6 访问测试
访问:http://你的服务器ip(localhost也可以),能过访问到以下页面说明已经安装成功,接下来你可以通过修改配置文件/home/nginx/html/index.html,来显示你想展示的页面。

截至目前,Nginx已经成功安装并启动运行!下面介绍如果给Nginx配置https访问。
三、配置https连接
2.1 创建ssl目录
在上文中,我们创建了conf、html、log三个目录,再创建一个ssl目录即可。
mkdir -p /home/nginx/ssl
2.2 生成证书
2.2.1 开发/测试环境
生成一个自签名证书:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /home/nginx/ssl/self.key \
-out /home/nginx/ssl/self.crt \
-subj "/CN=localhost"
这样后续就能通过 https://localhost 访问(但浏览器会警告“证书不受信任”)。
我用的是这种自签名证书来测试,因为是仅作为学习使用。
2.2.2 生产环境
要让 HTTPS 正常工作且浏览器不报错,你必须:
- 拥有一个由可信 CA 签发的证书(如 Let's Encrypt 免费证书)
- 将证书和私钥挂载到容器
- 在 Nginx 配置中正确引用
例如使用 Let's Encrypt:
证书通常位于
/etc/letsencrypt/live/your-domain/fullchain.pem
/etc/letsencrypt/live/your-domain/privkey.pem
然后挂载并配置即可。
PS:生产环境下我没有进行测试,需要的话可以自行查阅相关资料进行操作。
2.3 创建https配置文件
Nginx 默认会自动加载以下目录中的配置文件:
/etc/nginx/conf.d/*.conf(官方 Docker 镜像和多数 Linux 发行版使用)
所以我们在宿主机的/home/nginx/conf/conf.d下创建一个名为https.conf的文件(文件名位*.conf都可以)。
touch https.conf # 创建https.conf配置文件
sudo chmod 666 https.conf # 添加可写权限,如果需要的话
然后用将下面配置粘贴到https.conf即可:
server {
listen 443 ssl;
server_name localhost; # 或你的域名
ssl_certificate /etc/ssl/self.crt;
ssl_certificate_key /etc/ssl/self.key;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
这里需要注意:
ssl_certificate /etc/ssl/self.crt;
ssl_certificate_key /etc/ssl/self.key;
这两个配置的目录需要看你服务器的具体路径,我的是在/etc/ssl,有的可能是/etc/nginx/ssl。
2.4 启动Nginx
docker run --name nginx -p 9080:80 -p 9443:443 \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/ssl:/etc/ssl \
-d nginx:latest
大功告成,成功通过https进行访问!!!

四、总结
虽然在实习有接触过Nginx、OpenResty,但一直没机会学习Nginx。因此,想着记录一下学习一个技术栈的首要环节:配置环境。希望可以帮助到同为学习新技术的同学们~
温馨提示:如果本文对你有帮助,欢迎点赞、收藏、关注!如有疑问,评论区留言讨论~
8410

被折叠的 条评论
为什么被折叠?



