docker-compose部署nginx教程

 更新时间:2025年01月04日 10:01:37   作者:与民更始  
文章介绍了如何安装和配置docker-compose,创建一个Nginx容器,并通过docker-compose.yml文件进行配置,包括映射文件夹和自定义转发配置,最后,提供了重启和配置生效的脚本

docker-compose部署nginx

安装docker-compose

创建nginx文件夹

添加docker-compose.yml文件:

version: '3.3'
services:
  web:
    image: "xtulnx/nginx:tengine-latest"
    container_name: nginx
    hostname: s.nginx
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./html:/etc/nginx/html
      - ./data:/data
      - ./logs:/etc/nginx/logs
    # 配置转发时可直接写 proxy:s.dev
    extra_hosts:
      - "s.host:170.170.0.1"
      - "s.dev:127.0.0.1"
    working_dir: /etc/nginx
    ports:
      - "80:80"
      - "443:443"
    environment:
      - NGINX_PORT=80
    restart: always

在当前文件下添加volumes中映射的文件夹

conf.d文件下的default.conf

  log_format custom_log '$remote_addr - $remote_user [$time_local] '
                         '"$request" $status $body_bytes_sent '
                         '"$http_referer" "$http_user_agent" '
                         '$request_body $query_string '
                         '"$http_user_agent" "$http_x_forwarded_for" "$request_uri" '
                         'proxy_to: $upstream_addr';

  log_format  httplog  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" $request_body $query_string'
                      '"$http_user_agent" "$http_x_forwarded_for" "$request_uri"';

  log_format  uplg  '$remote_addr - $remote_user [$time_local] [$upstream_addr] "$request" [$request_body]'
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

  log_format  hu  '$remote_addr - $remote_user [$time_local] "$request" '                                                      
                  '"$status" $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" '
                  '"$gzip_ratio" $request_time $bytes_sent $request_length' ' $request_body';
    
  access_log  logs/access.log  custom_log;

#   sendfile        on;

  #增加一下websocket配置
  map $http_upgrade $connection_upgrade {
    default upgrade;
    ''   close;
  }
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
#创建de
    include conf.d/*.conf;
    location / {
        # root   /usr/share/nginx/html;
        root   /etc/nginx/html;
        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;
    }

}

自定义的一些转发配置文件例子:

  • user.conf
#重写路径的例子
#rewrite ^/dev_user/(.*\.*)$ /user/$1;


location ^~/user/ {
    #s.dev是nginx的compose里面配置的
	proxy_pass                   http://s.dev:8080/user/;
	#proxy_pass                  http://10.22.22.22:8080/user/;
	proxy_set_header            Host $host;
	proxy_set_header            X-Real-IP $remote_addr;
	proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
	client_max_body_size        100m;
}

配置生效重启

  • 可写成reload.sh:
docker-compose exec web nginx -s reload
#注:exec 正在运行的容器中执行命令:nginx -s reload

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker Swarm集群管理的使用及原理解析

    Docker Swarm集群管理的使用及原理解析

    这篇文章主要介绍了Docker Swarm集群管理的使用及原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • docker-compose中的环境变量问题

    docker-compose中的环境变量问题

    这篇文章主要介绍了docker-compose中的环境变量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 修改Docker默认镜像和容器的存储位置的方法

    修改Docker默认镜像和容器的存储位置的方法

    本篇文章主要介绍了修改Docker默认镜像和容器的存储位置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 一台虚拟机基于docker搭建大数据HDP集群的思路详解

    一台虚拟机基于docker搭建大数据HDP集群的思路详解

    这篇文章主要介绍了一台虚拟机基于docker搭建大数据HDP集群 ,本篇文章主要讲了大数据集群搭建的架构设计和实现思路部分,后面文章会探讨上层应用的构建,需要的朋友可以参考下
    2022-11-11
  • 在docker上安装运行mysql实例

    在docker上安装运行mysql实例

    Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
    2017-01-01
  • 基于docker 部署canvas-lms的详细步骤

    基于docker 部署canvas-lms的详细步骤

    这篇文章主要介绍了基于docker 部署 canvas-lms,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • docker常用命令总结(推荐)

    docker常用命令总结(推荐)

    这篇文章主要介绍了docker常用命令总结(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • docker文件存放路径, 获取容器启动命令操作

    docker文件存放路径, 获取容器启动命令操作

    这篇文章主要介绍了docker文件存放路径, 获取容器启动命令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker 容器互联互通的实现方法

    Docker 容器互联互通的实现方法

    这篇文章主要介绍了Docker 容器互联互通,本文讲解不同网络下的容器可以通过加入同一个docker网络,来访问该docker网络下的容器,并且既可以通过容器ip也可以通过容器名连接,非常方便,需要的朋友可以参考下
    2022-10-10
  • 详解如何将docker快速升级到最新版本

    详解如何将docker快速升级到最新版本

    最近在对区块链浏览器调优,该区块链浏览器就是使用docker部署的微服务,在一台新的服务器上启动时报错,发现是docker版本过低,所以本文给大家介绍了将docker快速升级到最新版本的方法,需要的朋友可以参考下
    2024-02-02

最新评论