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个步骤,记住 归零心态很重要 。

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

目录
相关文章
|
1月前
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
121 25
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 23
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
49 22
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
66 25
|
2月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
190 11
|
2月前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
683 7
|
3月前
|
安全 网络协议 应用服务中间件
内网ip申请SSL证书实现https访问
内网IP地址虽不能直接申请公网SSL证书,但可通过IP SSL证书保障数据安全。流程包括:确定固定内网IP,选择支持内网IP的CA,注册申请证书,生成CSR,验证IP所有权,下载部署证书至Web服务器,测试HTTPS访问,确保配置正确及证书有效。此方法适用于内网环境,提升数据传输安全性。
内网ip申请SSL证书实现https访问
|
3月前
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
116 2
|
3月前
|
安全 网络安全 数据安全/隐私保护
政务内网实现https访问教程
政务内网实现HTTPS访问需经过多个步骤:了解HTTPS原理,选择并申请适合的SSL证书,配置SSL证书至服务器,设置端口映射与访问控制,测试验证HTTPS访问功能,注意证书安全性和兼容性,定期备份与恢复。这些措施确保了数据传输的安全性,提升了政务服务的效率与安全性。
|
3月前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程