windows server 2012部署前后端分离中后台django服务并设置CA证书

记录一次windows server 2012上部署django服务,把其中的坑记录一下。

背景

服务器系统:Windows Server 2012 x64
后台服务:django4.0
架构:前后端分离,
代理服务器: IIS(Internet Infomation Services)

部署流程

一、django部署

自带的wsgi不适合生产环境使用,这里使用waitress部署django。

  1. 使用pip install waitress 安装waitress。
  2. 在工程根目录创建start_django.py,内容如下:
from waitress import serve
from d3server.wsgi import application

if __name__ == '__main__':
    serve(application, host='127.0.0.1', port=8000)
  1. 然后执行python start_django.py即可。

二、使用IIS代理请求并配置证书

  1. windows开启IIS。
    (1) 控制面板 > 程序和功能 > 启用或关闭windows功能。
    (2) 勾选internet Infomation Services


    image.png
  2. 安装扩展
    (1)安装 URL 重写模块和 ARR。
    URL Rewrite 模块
    Application Request Routing (ARR)

    (2)安装后重启IIS。
iisreset
  1. 配置证书和反向代理。
    (1)打开 IIS 管理器
    在控制面板中选择“系统和安全”,再选择“[管理工具],双击IIS,如下图:


    IIS管理器

(2)右键 网站 > 添加网站。
(3)填写配置:
网站名称:DjangoApp(服务名称)
物理路径:任意空目录(如 C:\Websites\DjangoProxy,无需放文件)
绑定 → 添加 HTTPS 绑定:

类型:https
IP 地址:All Unassigned
端口:443 (也可以为其他,比如:8443)
主机名:你的域名(也可以留空,标识接收所有访问)
SSL 证书:选择申请的证书(如 Let's Encrypt 证书或自签名证书)

(4) 配置反向代理
启用代理功能:

打开 IIS 管理器 → 选择服务器 → Application Request Routing Cache → 勾选 启用代理。

(5)添加 URL 重写规则:

右键你的网站(DjangoApp)→ URL 重写 → 添加规则 → 选择 反向代理。
输入后端地址:http://localhost:8000(Waitress 监听的地址, 前边的 http:// 可能不用写,因为写了之后会变成两个http://还需要手动删除一个)。
勾选 SSL 卸载(因为 IIS 已处理 HTTPS,转发到 HTTP 后端)。
会在物理路径下生成web.config文件,内容如下:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="ReverseProxy" stopProcessing="true">
          <match url="(.*)" />
          <action type="Rewrite" url="http://localhost:8000/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

(5) 开放防火墙端口:

New-NetFirewallRule -DisplayName "Allow HTTPS 443" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

至此后端的https服务配置完成,现在打开 https://[ip]:[port]/[path] 应该就可以访问服务了。
正常都是一个域名申请一个CA证书, 前端部署后,按照使用 IIS代理请求并配置证书第4步配置反向代理之后的操作,在配置url重写规则时使用匹配模式,把正则改为加上^api/(.*)即可。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容