单页应用 Nginx Django Python 和端口转发

Posted

技术标签:

【中文标题】单页应用 Nginx Django Python 和端口转发【英文标题】:Single page applications Nginx Django Python and port forwarding 【发布时间】:2018-01-21 08:11:59 【问题描述】:

我想在生产环境中运行我的单页应用程序。 由于出于 SEO 原因,我使用 rest API 和 ajax 调用将内容从后端传递到前端,因此我需要为爬虫机器人提供无 javascript 版本的内容。 我有一个没有 javascript 版本内容的 url,但由于网络服务器在端口 8000 上运行以访问我需要导航到 mydomain.com:8000/nojs 的无 javascript 文件。

我的应用程序 url 看起来像下面的代码:

urlpatterns = [
               url(r'^nojs/$', views.nojs),
               url(r'^blog/all/$', views.allTitles),
               url(r'^post/(?P<id>[\d+]+)/(?P<title>[\w+]+)/$', views.viewArticle)
]

而我的 nojs 方法只是一条问候消息:

def nojs(request):
        return HttpResponse("Hello")

我猜我需要在我的 nginx 配置中创建一些更改来访问 nojs 方法,而不使用我的域名后的 8000 端口。 如何在不使用 8000 端口的情况下导航到 mydomain.com/nojs 并获取 hello 消息?

【问题讨论】:

【参考方案1】:

要访问 nojs 文件夹中的文件,我需要将以下内容添加到域的 Nginx 配置文件中,这会将流量从端口 8000 转发到端口 80。

location /nojs 
proxy_pass http://127.0.0.1:8000/nojs/; #or whatever port you are using
proxy_set_header Host $host;

【讨论】:

以上是关于单页应用 Nginx Django Python 和端口转发的主要内容,如果未能解决你的问题,请参考以下文章

nginx 单个端口布置多个单页应用

带有 HTML5 应用缓存的单页应用的 Nginx 配置

创建与 CSS/HTML 相关的丰富动态单页 Django Web 应用程序的最佳方法

nginx 部署单页应用并启用Gzip

centos7 下通过nginx+uwsgi部署django应用

centos7 下通过nginx+uwsgi部署django应用