前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python部署-nginx部署带docker的https请求

python部署-nginx部署带docker的https请求

作者头像
Se7eN_HOU
发布2020-04-24 12:21:42
1.1K0
发布2020-04-24 12:21:42
举报

使用带docker的服务器配置https需要两层web服务器

首先例如使用https://www.Se7eN_HOU.com进行首页访问,首先会先进入到主服务器里面,经过主服务器的Nginx Web服务器,进行web服务。这时主服务器的nginx就会监听80端口,收到这个请求

代码语言:javascript
复制
 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端口,因为有

代码语言:javascript
复制
 rewrite ^(/.*)$ https://www.Se7eN_HOU.com$1 permanent;

这一句配置,所有其实请求80端口的已经先转到了443端口,我们还需要对主服务器443端口配置

代码语言:javascript
复制
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端口,即可得到这个的请求

代码语言:javascript
复制
 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相关信息即可

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档