新增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网络模式将容器中的应用都直接绑定在宿主机的端口,新增应用代理就不要再挨个端口绑定
在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
在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; }
在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; } }
启动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