其实Flask可以直接用tornado部署就行:

# coding=utf-8
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from app.app_main import app if __name__ == '__main__':
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(9050)
IOLoop.instance().start()

以上就可以直接通过访问ip或者域名加9050端口就可以访问了。

但是,如果要支持https呢?要直接访问域名(域名后面不叫端口号)呢?同时访问http直接跳转到https呢?

接下来讲一下:

首先,部署方式要修改一下代码:

# coding=utf-8
import os.path
from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from tornado import ioloop
from app.app_main import app pl = os.getcwd().split('cover_app_platform')
cert_path = pl[0] + r'cover_app_platform\\app\\https_cert\\' def main():
application = HTTPServer(WSGIContainer(app))
# https证书地址
https_cert_file = cert_path + 'covercert.pem'
# https证书私钥地址
https_key_file = cert_path + 'privatekey.pem'
# https服务
server = HTTPServer(application, ssl_options={"certfile": https_cert_file, "keyfile": https_key_file})
# 9070启动端口
server.listen(9070)
ioloop.IOLoop.instance().start() if __name__ == "__main__":
main()

当然,怎么生成“covercert.pem”和'privatekey.pem'文件呢,你可以找你们运维给你生成,或者让运维给你根证书,自己生成:

# 生成证书的申请文件和私钥文件
openssl req -nodes -newkey rsa:1024 -out coverreq.pem -keyout privatekey.pem

# req:request的简写,代表发出一个申请数字证书的请求
# -nodes:不生成pin码,简化流程
# -newkey:生成新证书并指明加密算法和长度,也可以写成2048
# -out:输出一个请求文件,非密码文件
# -keyout:生成私钥 # 生成证书 :使用申请文件和私钥进行证书的申请,自己给自己颁发证书
openssl req -in coverreq.pem -x509 -key privatekey.pem -out covercert.pem -days 3650
# -in:用之前的申请文件作为输入
# -x509:证书格式
# -key:私钥文件
# -out:产出的证书文件
# -days:证书有效期

然后我们来配置nginx,怎么安装就不介绍了:

在配置nginx\conf\nginx.conf 配置文件前,先copy保存一下,

找到http{}段:

http {
include 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 logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; server {
listen 80;
server_name xx.thecover.cn;
rewrite ^(.*) https://$server_name$1 permanent; # charset utf-8; #access_log logs/host.access.log main; location / {
proxy_pass https://localhost:9070;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

server里我们配置运行的端口为80,域名为“xx.thecover.cn”,“rewrite ^(.*) https://$server_name$1 permanent;”  请求都转发到https,比如客服端访问http域名,也直接转为https。

location 里直接配置我们flask启动的地址和端口“proxy_pass https://localhost:9070;”。

接下来配置Https:

配置https前,我们需要把证书和私钥文件放到nginx下的/conf/cert目录下,一般conf下没有cert文件夹的,需要直接建一个:

然后找到# HTTPS server段:

server{}这里一般都是注释了的,都打开:

 # HTTPS server
#
server {
listen 443 ssl;
server_name localhost; ssl_certificate cert/covercert.pem;
ssl_certificate_key cert/privatekey.pem; ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; location / {
#root html;
#index index.html index.htm;
proxy_pass https://localhost:9070;
} }

如上配置就行,localtion里也需要配置flask访问的地址。

ok,到此为止,我们就配置好了:

直接访问域名:https://xx.thecover.cn,http:xx.thecover.cn, https:xx.thecover.cn:9070,都可以访问,妥妥的。

另外,如果https证书是自己建立的话,浏览器访问会提示无效,或者不安全,还是要根证书来生成才行。

Flask、Tornado、Nginx搭建Https服务的更多相关文章

  1. centos7.x下环境搭建(五)—nginx搭建https服务

    https证书获取 十大免费SSL证书 https://blog.csdn.net/ithomer/article/details/78075006 如果我们用的是阿里云或腾讯云,他们都提供了免费版的 ...

  2. 【HTTPS】自签CA证书 && nginx配置https服务

    首先,搭建https服务肯定需要一个https证书.这个证书可以看做是一个应用层面的证书.之所以这么说是因为https证书是基于CA证书生成的.对于正式的网站,CA证书需要到有资质的第三方证书颁发机构 ...

  3. 基于Nginx搭建WebDAV服务

    title: 基于Nginx搭建WebDAV服务 categories: - [IT,网络,服务] tags: - WebDAV - Nginx comments: true date: 2022-1 ...

  4. 利用nginx搭建https服务器

    一.HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加 ...

  5. 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)

    V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...

  6. Nginx搭建https服务器

    HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即H ...

  7. Nginx 配置https 服务

    一.HTTPS 服务 为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 HTTPS加密校验 ...

  8. 基于Nginx的https服务

    1.HTTPS协议的实现 1.为什么需要HTTPS? 原因:HTTP不安全 1.传输数据被中间人盗用.信息泄露 2.数据内容劫持.篡改 对传输内容进行加密以及身份验证 2.对称加密 非对称加密 3.H ...

  9. [web][nginx] 初识nginx -- 使用nginx搭建https DPI解码测试环境

    环境 CentOS 7 X86 文档: https://nginx.org/en/docs/ 安装: [root@dpdk ~]# cat /etc/yum.repos.d/nginx.repo [n ...

  10. 在nginx环境下搭建https服务,代理到本地web项目

    安装过程略. 1.证书准备 本地调试,可以安装自签名证书,安装方法参考https本地自签名证书添加到信任证书访问 2.修改配置文件 将上面的配置文件拷贝到conf目录,添加或者修改节点如下 http{ ...

随机推荐

  1. Shopee虾皮api接口 搜索商品、评价信息 python数据采集

    iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Shopee电商数据采集API,供用户按需调用. 接口使用详情请参考Shopee接口文档 接 ...

  2. Android学习之SQLite数据库存储

    •引言 概念 SQLite数据库,和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库: 特点 SQLite是一个轻量级的关系型数据库,运算速 ...

  3. springboot,简要记录,方便复习,

    boot 笔记第一步新建工程,导包,由于boot的数据库框架是用mybtis -paus,所以关于数据库系统那儿不用色选mybatis ,需要重新maven导包完整导包以下人容: <?xml v ...

  4. 快速带你入门css

    css复习笔记 1. css样式值 1.1 文字样式 1 p{ 2 font-size: 30px;/*设置文字大小*/ 3 font-weight: bold;/*文字加粗*/ 4 font-sty ...

  5. Oracle中表字段有使用Oracle关键字的一定要趁早改!!!

    一.问题由来 现在进行项目改造,数据库需要迁移,由原来的使用GBase数据库改为使用Oracle数据库,今天测试人员在测试时后台报了一个异常. 把SQL语句单独复制出来进行查询,还是报错,仔细分析原因 ...

  6. vue 的属性展开 props v-bind 记得带key

    <el-table-column v-for="column in columns" :key="column.prop" v-bind="co ...

  7. 【深度学习】批量归一化 BatchNormalization

    一.背景       机器学习的本质是对物理世界进行建模,做的就是拟合数据分布.      但是在模型训练过程中,神经网络参数不断更新,导数中间层的数据分布频繁地变化(内部协变量偏移),不利于网络参数 ...

  8. 定义pod的hosts文件(HostAliases)

    通过HostAliases 向 Pod /etc/hosts 文件添加条目 当 DNS 配置以及其它选项不合理的时候,通过向 Pod 的 /etc/hosts 文件中添加条目, 可以在 Pod 级别覆 ...

  9. WINDOWS.H already included. MFC apps must not #include Windows.h

    做C++.C#和C++/CLI的混合编程有一段时间了,填了不少的坑. 今天又遇到一错误,想着挺容易就解决,估计是大脑疲惫,折腾许久才找到原因. 错误: 错误 C1189 #error: WINDOWS ...

  10. Linux 串口驱动实例简单分析(x86 8250驱动(16550A),TIOCMGET, TIOCMSET, RTS)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...