美文网首页
Docker 中启动 Nginx 实现HTTPS访问并进行反向代

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

作者: 卜心协 | 来源:发表于2018-06-13 13:03 被阅读0次

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

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

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

    相关文章

      网友评论

          本文标题:Docker 中启动 Nginx 实现HTTPS访问并进行反向代

          本文链接:https://www.haomeiwen.com/subject/dndjeftx.html