Docker中使用Nginx镜像配置HTTPS和HTTP强制使用HTTPS访问(4)

 

一、前言                                                       

  上一文章当中说了Docker-Compose管理镜像和容器,本文章介绍使用Docker中Nginx镜像,使用的工具和ubuntu版本在ASP.NET CORE部署在Docker容器中已详细说明。

二、Docker-Nginx配置                                 

拉取Nginx镜像 

docker pull nginx

查看镜像

docker images

使用挂载nginx配置文件的方式,新建文件夹,文件夹内新建nginx.conf和default.conf,新建ssl文件夹将证书上传到文件夹中。

 

 

 

nginx.conf配置文件内容

#运行nginx的用户
user nginx;
#启动进程设置成和CPU数量相等
worker_processes 1;

#全局错误日志及PID文件的位置
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

#工作模式及连接数上限
events {
#单个后台work进程最大并发数设置为1024
worker_connections 1024;
}


http {
#设定mime类型
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压缩
#gzip on;
include server/*.cn;
include /etc/nginx/conf.d/*.conf;
}
View Code

default.conf配置文件内容

server {
    ## 443端可以是https的专用端口
    listen 443 ssl; 
    server_name 域名;

    ssl_certificate        /ssl/ca.crt;
    ssl_certificate_key    /ssl/ca.key;

    ssl_session_timeout  5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;

    location / {
    #    proxy_pass http://localhost:5000;
    proxy_pass 容器地址,禁止使用127.0.0.1;
        proxy_set_header     Host $host;
        proxy_set_header     X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-Proto https;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout     150;
        proxy_send_timeout     100;
        proxy_read_timeout    100;
        proxy_buffers        4 32k;
        client_max_body_size    8m;
        client_body_buffer_size    128;    
    }
}
#强制HTTP跳转HTTPS
server {  

listen 80;

server_name  域名;

rewrite ^(.*) https://$server_name;

}
View Code

启动nginx容器并且挂载文件

sudo docker run --name nginx -d -p 443:443 -p 80:80 -v 
/home/cs-root/Nginx/nginx.conf:/etc/nginx/nginx.conf -v
/home/cs-root/Nginx/default.conf:/etc/nginx/conf.d/dafault.conf -v /home/cs-root/Nginx/ssl:/ssl/:rw     nginx

我所遇到的问题:

Nginx 代理地址如果是本地 不能使用127.0.0.1或loacalhost  应使用服务器ip。

内网通过域名访问不了:公网ip映射域名错误。

 

Docker Nginx介绍到这里就结束了,如遇到问题,可以进行评论留言。

 

posted @ 2020-09-27 15:13  二震  阅读(920)  评论(0)    收藏  举报