Jan*_*sen 6 regex django uwsgi google-cloud-dns google-cloud-run
我正在将 Django 网站迁移到 GCP 并首次使用 Google Cloud Run。体验很棒。我对域映射功能也非常满意,但我在将 www 子域转发到裸域 URL 时遇到问题。为了实现一致的页面分析,我希望浏览的访问者被https://www.mycooldomainname.com
301 重定向到https://mycooldomainname.com
(真实域编辑)
我将 bare 和 www 子域添加到 Cloud Run 自定义域:
并在我的注册商处添加了所需的 A、AAA 和 CNAME 记录:
传播完所有内容后,我可以访问我的网站 和https://mycooldomainname.com
,https://www.mycooldomainname.com
但如何配置转发/重写?
从我读到的其他帖子中,人们使用 Google Cloud DNS 实现了这一点,看起来他们使用了别名来进行转发。
在这种情况下,我尝试通过 uwsgi 进行转发:
django 应用程序通过 uwsgi 使用此配置提供服务 - 请注意重定向规则:
[uwsgi]
plugins-dir = /usr/lib/uwsgi/plugins
plugins = router_uwsgi
route-uri = ^(.*)\/\/www\.(.*)$ redirect-301:$1//$2
hook-master-start = unix_signal:15 gracefully_kill_them_all
http-socket = 0.0.0.0:8000
cheaper = 1
cheaper-algo = backlog
workers = 3
master = true
enable-threads = true
threads = 12
offload-threads = 12
harakiri = 300
http-harakiri = 300
logformat = %(var.HTTP_X_REAL_IP) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)\" %(msecs)ms
static-map = /=webroot
static-gzip-all = true
module = app.wsgi
Run Code Online (Sandbox Code Playgroud)
实际的重定向在 url 的其他部分上运行良好,例如,如果我包含以下重定向测试规则:
route-uri = ^(.*)est(.*)$ redirect-301:$1ust$2
Run Code Online (Sandbox Code Playgroud)
浏览https://www.mycooldomainname.com/test/
正确重定向到https://www.mycooldomainname.com/tust/
因此,目前我不确定重定向已验证域的部分内容是否存在 GCP 限制,或者我的正则表达式是否错误。
感谢所有的建议!这是我学到的:
[uwsgi]
plugins-dir = /usr/lib/uwsgi/plugins
plugins = router_uwsgi
route-host = ^www.mycooldomainname.com$ redirect-permanent:https://mycooldomainname.com${REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
我需要在我的基础映像中安装以下内容才能使用内部重写和插件:
FROM $PYTHON_IMAGE as base
RUN apt-get update \
&& \
apt-get install --no-install-recommends -y \
libpcre3-dev zlib1g-dev \
uwsgi-core \
&& \
apt-get clean && rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)