Docker 中启动 Nginx 实现HTTPS访问并进行反向代理Tomcat

简介: Docker 中启动 Nginx 实现HTTPS访问并进行反向代理Tomcat

成功经验总结,正确配置五步搞定

一、安装Nginx

1、删除命令 yum remove nginx
2、使用 yum install nginx 命令安装
3、查看使用的配置文件
   nginx -t

二、Nginx 阿里 HTTPS配置

/etc/nginx/nginx.conf 
证书服务上下载 Nginx的证书
配置文件增加内容
server {
            listen 443;
            server_name localhost;
            ssl on;
            root html;
            index index.html index.htm;
            ssl_certificate   /etc/nginx/cert/1527604247222.pem;
            ssl_certificate_key  /etc/nginx/cert/1527604247222.key;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location / {
                root html;
                index index.html index.htm;
            }
        }
        
注意 ssl_certificate   /etc/nginx/cert/1527604247222.pem; 配置的路径信息
配置完成后使用
     nginx -t 命令进行配置信息校验
     nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
     nginx: configuration file /etc/nginx/nginx.conf test is successful
标示配置信息测试成功。

4、启动 nginx
   systemctl start nginx   
5、停止 nginx
   ps aux | grep nginx
   pkill -9 nginx

三、制作Nginx镜像

nginx.conf 文件如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    #include /etc/nginx/conf.d/*.conf;
    upstream tomcat_client {
         server t01:8080 weight=1;
    } 
    server {
        server_name localhost;  #域名
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        location / {
            proxy_pass http://tomcat_client;
            proxy_redirect default;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    server {
            listen 443;
            server_name localhost;  #域名
            ssl on;
            root html;
            index index.html index.htm;
            ssl_certificate   /etc/nginx/cert/1527604247222.pem;
            ssl_certificate_key  /etc/nginx/cert/1527604247222.key;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location / {
                proxy_pass http://tomcat_client;
            proxy_redirect default;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            }
        }
}

Dockerfile 文件如下:

#基础镜像
FROM nginx
#作者
MAINTAINER NoTrustEvil
#定义工作目录
ENV WORK_PATH /etc/nginx
#定义conf文件名
ENV CONF_FILE_NAME nginx.conf
#删除原有配置文件
RUN rm $WORK_PATH/$CONF_FILE_NAME
#复制新的配置文件
COPY ./$CONF_FILE_NAME $WORK_PATH/
#SSL证书文件
ADD ./cert $WORK_PATH/cert
#给shell文件赋读权限
RUN chmod a+r $WORK_PATH/$CONF_FILE_NAME

注意事项

1、证书需要打包到镜像中
#SSL证书文件
ADD ./cert $WORK_PATH/cert
ssl_certificate   /etc/nginx/cert/1527604247222.pem; 
为docker容器中文件路径,在Dockerfile中配置,打包镜像的时候从宿主机上复杂到容器中。
2、反向代理的配置 nginx.conf 文件中通过
   location / {
                proxy_pass http://tomcat_client;
    
   upstream tomcat_client {
         server t01:8080 weight=1;
    }
   进行描述
3、t01 是指向的 
    docker-compose.yml 中的 
    links: 
      - sping101:t01 
4、可以启动容器后进入Nginx容器中测试配置信息配置是否正确
   docker exec -it image_nginx_nginx101_1 bash 
   exit 退出

四、制作docker-compose

docker-compose.yml 文件如下:

version: '2'
services:
  nginx101: 
    image: myfznginx
    links: 
      - sping101:t01 
    ports: 
      - "80:80" 
      - "443:443" 
    restart: always 
  sping101: 
    image: spingjpa
    ports: 
      - "8080:8080"
    restart: always

注意事项

links: 
      - sping101:t01 
是将 sping101 容器以 t01 别名连接到 nginx101 容器,便于 nginx101 容器调用。

五、容器组启停

进入 docker-compose.yml 文件目录
后台启动 docker-compose up -d
停止 docker-compose stop
移除 docker-compose down 

六、测试你的域名

这个时候应该能正常的实现 访问HTTPS域名,跳转到你的Tomcat服务中。

若无法访问,仔细检查之前的5个步骤,记住 归零心态很重要 。

实在查不出原因不要纠结不要气馁,从头再来一次。

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
37 1
|
22天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
91 0
|
30天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
45 0
|
8天前
|
运维 Java 应用服务中间件
Tomcat详解(七)——Tomcat使用https配置实战
Tomcat详解(七)——Tomcat使用https配置实战
19 4
|
18天前
|
应用服务中间件 nginx Docker
docker实现Nginx
通过以上步骤,你可以使用Docker来快速搭建并运行Nginx服务器,而且可以根据需要进行自定义配置和持久化数据。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
14 1
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
210 0
|
1月前
|
负载均衡 应用服务中间件 nginx
|
1月前
|
前端开发 应用服务中间件 nginx
Docker安装nginx和基本配置
Docker安装nginx和基本配置
133 0
|
前端开发 应用服务中间件 nginx
nginx部署之https访问按照不同路径访问不同项目
上一篇介绍过如何在一个nginx上使用同一个端口部署多个web项目进行访问.具体内容可以参考:nginx支持一个端口访问多个前端项目(http以及https).