单页应用 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 和端口转发的主要内容,如果未能解决你的问题,请参考以下文章
创建与 CSS/HTML 相关的丰富动态单页 Django Web 应用程序的最佳方法