我正在开发一个带有 Mongo 后端的 Django 系统,这是我第一次尝试这种设置。它有一个相当标准的 nginx-hands-off-to-Apache-for-python 服务器设置。这一切似乎都适用于同一服务器上更标准的 Django-MySQL 应用程序。
对于我的 Django-Mongo 应用程序,当我使用“python manage.py shell”时,我得到:
from django.test.client import Client
client = Client()
response = client.get('/')
response.status_code
200
response.content
'<html>\n <head>\n <link href="/static/blog.css" rel="stylesheet" type="text/css">\n <title>Worldmaker</title>\n </head>\n <body>\n <ul>\n <li><a href="sourcedoc/create/">New Sourcedoc</a></li>\n <li><a href="sourcedoc/list/">All Sourcedocs</a></li>\n <li><a href="noun/create/">New Noun</a></li>\n <li><a href="noun/list/">All Nouns</a></li>\n </ul>\n <h1>Worldmaker</h1>\n \n\n </body>\n</html>\n\n'
但是,当我浏览到http://www.mydomain.com/gogoworld/时,我得到一个 nginx 504 页面:
504 网关超时 nginx/1.4.1
我的 /etc/nginx/sites-enabled/vhost 包括:
location /gogoworld/ {
proxy_pass http://127.0.0.1:84;
include /etc/nginx/proxy.conf;
}
我的 /etc/apache2/httpd.conf 包括:
<Directory "/home/rosshartshorn/htdocs/gogoworld">
WSGIScriptAlias /gogoworld /home/rosshartshorn/htdocs/gogoworld/wsgi.py
WSGIPythonPath /home/rosshartshorn/htdocs/ordinarymysqlapp:/home/rosshartshorn/htdocs/worldmaker:/home/rosshartshorn/htdocs/gogoworld
我的网址.py
from django.conf.urls import patterns, include, url
from sourcedocs import views
urlpatterns = patterns('',
url(r'^$', views.index),
)
我的困惑是使用 django.text.client 和使用我的网络浏览器 ping 站点之间有什么区别。我曾认为这是同一件事,但由于一个返回响应而另一个没有,我显然是不正确的。差异仅在 apache 和/或 nginx 级别,还是 django 机器的某些部分也不同?关于在哪里查看为什么这在 django shell 中有效但不能通过浏览器的任何想法?
编辑:这是我的网站可用/rosshartshorn 中的内容:
Listen 84
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
<VirtualHost *:84>
ServerName www.rosshartshorn.net
ServerAlias rosshartshorn.net
DocumentRoot /home/rosshartshorn/htdocs
<Directory /home/rosshartshorn/htdocs>
AllowOverride All
allow from all
</Directory>
</VirtualHost>