Administrator
发布于 2024-08-05 / 15 阅读
0
0

docker-compose方式部署nginx

  1. 新增docker-compose.yml文件,内容如下:

    version: '3.3'
    services:
          nginx:
            image: nginx
            restart: always
            hostname: nginx
            container_name: nginx
            privileged: true
    #        ports:
    #          - 80:80
    #          - 443:443
    #          - 81:81
            volumes:
              - ./conf/:/etc/nginx/                   # 配置文件,映射到当前文件所在路径的conf文件夹
              - ./cert/:/etc/cert/                    # ssl证书,映射到当前文件所在路径的cert文件夹
              - ./www/:/usr/share/nginx/html/         # 默认显示的index网页,映射到当前文件所在路径的www文件夹
              - ./logs/:/var/log/nginx/               # 日志文件,映射到当前文件所在路径的logs文件夹
            network_mode: host                        # host网络模式将容器中的应用都直接绑定在宿主机的端口,新增应用代理就不要再挨个端口绑定
    
  2. 在docker-compose.yml文件所在文件夹中创建新文件夹,创建完效果如下图:

    [root@iZ2ze616zb6x1rqtgc7w9qZ nginx]# ll -h
    total 20K
    drwxr-xr-x 2 root root 4.0K Jul 22 16:28 cert
    drwxr-xr-x 3 root root 4.0K Aug  1 16:44 conf
    -rw-r--r-- 1 root root  552 Jun  7 15:21 docker-compose.yml
    drwxr-xr-x 2 root root 4.0K May 29 17:09 logs
    drwxr-xr-x 5 root root 4.0K Aug  5 08:53 www
  3. 在conf文件夹中新增2个文件如下

    # nginx.conf文件指定了包含其他nginx模块/etc/nginx/conf.d/*.conf,内容:
    events{}
    http {
    
        default_type application/octet-stream;
        include /etc/nginx/mime.types;
        include /etc/nginx/conf.d/*.conf;
    }
    # mime.types文件用于指定如何处理不同类型的文件请求,内容:
    types {
        text/html                                        html htm shtml;
        text/css                                         css;
        text/xml                                         xml;
        image/gif                                        gif;
        image/jpeg                                       jpeg jpg;
        application/javascript                           js;
        application/atom+xml                             atom;
        application/rss+xml                              rss;
    
        text/mathml                                      mml;
        text/plain                                       txt;
        text/vnd.sun.j2me.app-descriptor                 jad;
        text/vnd.wap.wml                                 wml;
        text/x-component                                 htc;
    
        image/png                                        png;
        image/svg+xml                                    svg svgz;
        image/tiff                                       tif tiff;
        image/vnd.wap.wbmp                               wbmp;
        image/webp                                       webp;
        image/x-icon                                     ico;
        image/x-jng                                      jng;
        image/x-ms-bmp                                   bmp;
    
        font/woff                                        woff;
        font/woff2                                       woff2;
    
        application/java-archive                         jar war ear;
        application/json                                 json;
        application/mac-binhex40                         hqx;
        application/msword                               doc;
        application/pdf                                  pdf;
        application/postscript                           ps eps ai;
        application/rtf                                  rtf;
        application/vnd.apple.mpegurl                    m3u8;
        application/vnd.google-earth.kml+xml             kml;
        application/vnd.google-earth.kmz                 kmz;
        application/vnd.ms-excel                         xls;
        application/vnd.ms-fontobject                    eot;
        application/vnd.ms-powerpoint                    ppt;
        application/vnd.oasis.opendocument.graphics      odg;
        application/vnd.oasis.opendocument.presentation  odp;
        application/vnd.oasis.opendocument.spreadsheet   ods;
        application/vnd.oasis.opendocument.text          odt;
        application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                         pptx;
        application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                         xlsx;
        application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                         docx;
        application/vnd.wap.wmlc                         wmlc;
        application/x-7z-compressed                      7z;
        application/x-cocoa                              cco;
        application/x-java-archive-diff                  jardiff;
        application/x-java-jnlp-file                     jnlp;
        application/x-makeself                           run;
        application/x-perl                               pl pm;
        application/x-pilot                              prc pdb;
        application/x-rar-compressed                     rar;
        application/x-redhat-package-manager             rpm;
        application/x-sea                                sea;
        application/x-shockwave-flash                    swf;
        application/x-stuffit                            sit;
        application/x-tcl                                tcl tk;
        application/x-x509-ca-cert                       der pem crt;
        application/x-xpinstall                          xpi;
        application/xhtml+xml                            xhtml;
        application/xspf+xml                             xspf;
        application/zip                                  zip;
    
        application/octet-stream                         bin exe dll;
        application/octet-stream                         deb;
        application/octet-stream                         dmg;
        application/octet-stream                         iso img;
        application/octet-stream                         msi msp msm;
    
        audio/midi                                       mid midi kar;
        audio/mpeg                                       mp3;
        audio/ogg                                        ogg;
        audio/x-m4a                                      m4a;
        audio/x-realaudio                                ra;
    
        video/3gpp                                       3gpp 3gp;
        video/mp2t                                       ts;
        video/mp4                                        mp4;
        video/mpeg                                       mpeg mpg;
        video/quicktime                                  mov;
        video/webm                                       webm;
        video/x-flv                                      flv;
        video/x-m4v                                      m4v;
        video/x-mng                                      mng;
        video/x-ms-asf                                   asx asf;
        video/x-ms-wmv                                   wmv;
        video/x-msvideo                                  avi;
    }
  4. 在conf路径下创建conf.d文件夹,这里以.conf结尾的文件都是nginx的具体配置模块,以下是示例:

    [root@iZ2ze616zb6x1rqtgc7w9qZ conf.d]# pwd
    /home/nginx/conf/conf.d
    [root@iZ2ze616zb6x1rqtgc7w9qZ conf.d]# ll -h
    total 12K
    -rw-r--r-- 1 root root 1.1K Jul 22 16:29 logs.conf
    -rw-r--r-- 1 root root  912 Jun  7 14:51 test.conf
    -rw-r--r-- 1 root root 1.9K Aug  5 09:21 www.conf
    [root@iZ2ze616zb6x1rqtgc7w9qZ conf.d]# vi www.conf 
    
    server {
        listen 80;
        server_name www.jiangk.top;
        return 301 https://www.jiangk.top$request_uri;
    }
    
     server {
            listen       443 ssl;
            server_name  www.jiangk.top;
            ssl_certificate      /etc/cert/www.jiangk.top.pem;
            ssl_certificate_key  /etc/cert/www.jiangk.top.key;
            ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
            ssl_protocols TLSv1.2;
            ssl_prefer_server_ciphers on;
            charset utf-8;
            client_max_body_size 1024m;
            # 搜狗收录验证文件
            location =/sogousiteverification.txt {
                    root /usr/share/nginx/html;
            }
    
            location / {
                    proxy_pass http://localhost:8090/;
                    proxy_set_header HOST $host;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            location /ruoyi-ui {
                    root   /usr/share/nginx/html;
                    try_files $uri $uri/ /index.html;
                    index  index.html index.htm;
            }
            location /ruoyi-h5 {
                    root   /usr/share/nginx/html;
                    try_files $uri $uri/ /index.html;
                    index  index.html index.htm;
            }
    
            # ruoyi server proxy
            location /prod-api/ {
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE_HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-NginX-Proxy true;
    
                #ruoyi
                proxy_pass http://localhost:8080/prod-api/;
            }
    
            error_page  401 401 403 404 406 500 502 503 504  /50x.html;
            location = /50x.html {
                root   /usr/share/nginx/html;
            }
    }
  5. 启动nginx服务

    [root@iZ2ze616zb6x1rqtgc7w9qZ conf.d]# docker-compose up -d
    [root@iZ2ze616zb6x1rqtgc7w9qZ conf.d]# docker ps 
    CONTAINER ID   IMAGE                                   COMMAND                  CREATED        STATUS       PORTS                                                  NAMES
    3eb9f5fad1f0   nginx                                   "/docker-entrypoint.…"   8 seconds ago    Up 6 seconds                                                          nginx


评论