使用带docker的服务器配置https需要两层web服务器
首先例如使用https://www.Se7eN_HOU.com进行首页访问,首先会先进入到主服务器里面,经过主服务器的Nginx Web服务器,进行web服务。这时主服务器的nginx就会监听80端口,收到这个请求
server { # 监听80端口 listen 80; # 监听的域名, server_name www.Se7eN_HOU.com; # 重定向到443端口 rewrite ^(/.*)$ https://www.Se7eN_HOU.com$1 permanent; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 如果方位80端口,跳转到本地的8888端口程序 proxy_pass http://127.0.0.1:8888; } }
因为这里我们服务器上安装了docker,而我们的后台代码在docker里面,而8888端口映射docker里面的80端口,所以 proxy_pass http://127.0.0.1:8888;这一句配置的作用就将请求专项到127.0.0.1:8888映射docker里面的80端口,因为有
rewrite ^(/.*)$ https://www.Se7eN_HOU.com$1 permanent;
这一句配置,所有其实请求80端口的已经先转到了443端口,我们还需要对主服务器443端口配置
server { # https 默认的是443端口,其实ssl是安全证书 listen 443 ssl; # 监听的域名 server_name www.Se7eN_HOU.com; # 设置从ssl证书网站上下载的证书 ssl_certificate /usr/local/nginx/ssl/www.Se7eN_HOU.com_bundle.pem; # 设置从ssl证书网站上下载的证书 ssl_certificate_key /usr/local/nginx/ssl/www.Se7eN_HOU.com.key; # 对请求的设置 location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置请求重定向到127.0.0.1:8888端口,即我们的docker里面 proxy_pass http://127.0.0.1:8888; } }
这样设置完毕以后这个请求就通过主服务器的nginx先从80端口,转到443端口,进过证书的配置选项后,在转到8888端口的docker中,而主服务器的8888端口对应docker中的80端口,这样经过一系列的转化,这个请求就到了我们docker中的80端口了,下面我们在docker中的nginx中监听80端口,即可得到这个的请求
server { listen 80; # 因为这个内部的nginx80端口是通过主服务器nginx的127.0.0.0:8888过来的,所以server_name写localhost 即可 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; # 主页的配置 location / { root /opt/www/singtec; index index.html index.htm; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # api请求的配置 location /api{ # 导入uwsgi文件 include /usr/local/nginx/conf/uwsgi_params; # 使用uwsgi启动python后端代码,提供api请求 uwsgi_pass 0.0.0.0:8000; }
}
注意:带有docker容器的服务器,主要在主服务器的nginx上配置https相关配置即可,docker服务器上的nginx主要配置uwsgi相关信息即可