Nginx 使用 docker 部署

进击的学霸...大约 2 分钟Nginx

前段时间服务器到期,重新迁移博客,安装 nginx 时使用了 docker 部署,预期配置合适之后将容器打包成镜像,下次再部署时直接拉取运行即可。使用了 docker-compose

基础配置

version: '3.1'
services:
  nginx:
    restart: always
    # 使用的镜像
    image: nginx 
    # 容器名字
    container_name: nginx
    # 端口映射
    ports:
      - 80:80
      - 443:443
    # 数据挂载
    volumes:
      - /service/nginx/conf:/etc/nginx/conf.d
      - /service/nginx/html:/usr/share/nginx/html
      - /service/nginx/logs:/var/log/nginx

要注意的是宿主机的文件会被挂载到容器内,像 nginx 配置这些就要注意使用的路径,应当是容器内的路径,这块着实给我困扰了一段时间,nginx 配置文件示例:

server {
  listen       443 ssl;
  server_name code.jjdxb.top;
  charset utf-8;
  access_log  /var/log/nginx/code_jjdxb_top.access.log;
  error_log   /var/log/nginx/code_jjdxb_top.error.log;

	include conf.d/ssl.configure;

	location / {
    try_files $uri $uri/ /index.html;
    root   /usr/share/nginx/html/code/;
    index  index.html index.htm;
  }
}

相关的命令如下

docker pull nginx    # 拉取 nginx 镜像
docker-compose up -d # 根据 docker-compose.yml 运行容器
docker ps            # 查看当前正在运行的容器
docker exec -it nginx bash # 使用 bash 的方式进入到 nginx 容器中
docker exec -it nginx nginx -t # nginx 检查配置(前提是要进入容器将 nginx 设置为全局命令)
docker exec -it nginx nginx -s reload # nginx 重载

ssl

进入到 nginx 容器中,按照 给网站增加ssl证书 安装 acme 脚本,并生成&安装证书。然后将这个运行中的容器打包成镜像,下次就可以使用这个镜像部署了

nginx 反向代理

这几天在弄一个 artalk 的评论系统,这个也是 docker 部署的,然后我不想将端口暴露在外部,只想通过域名及反向代理的方式访问,在配置反向代理的时候,按照以前的思路使用 proxy_pass http://127.0.0.1:8080/; 结果并不能生效。后来想在容器内运行的时候 127.0.0.1 指向的是容器内部的环境,并不是宿主机的,但是 8080 端口已经被占用不能再分配给 nginx 容器。通过 docker network inspect bridge 命令查看 docker 的网关信息,使用网关地址取代 127.0.0.1 即可成功实现反代。

小结

也可能我的理解是错的,毕竟我确实不是很懂这个,如果你发现我的描述有误,希望可以帮助我指正,不胜感激

评论
  • 按正序
  • 按倒序
  • 按热度