1

我正在尝试在 Django 的 localhost 网络服务器(127.0.0.1:8000)前面使用 Nginx 来提供静态内容。我希望 Nginx 为“/static”下的所有文件提供服务,如果没有,则将请求传递到 Django 的网络服务器,但我被卡住了!这是我所做的:

  1. 让 Nginx 在我的 OSX 上运行,所以“欢迎使用 Nginx!” 页面显示在本地主机上。
  2. 更改了我的 /etc/hosts 文件以添加“testdev.com”:

    127.0.0.1 本地主机

    127.0.0.1 testdev.com

  3. 在 /usr/local/src/nginx-1.2.6 中制作了 /sites-available 和 /sites-enabled 文件

  4. 我在 /conf 中的 nginx.conf 文件是默认加上 include 语句:

    包括 /usr/local/src/nginx.1.2.6/sites-enabled/testdev.com

5.我的 testdev.com 文件在 sites-available 中,在 /sites-enabled 中有一个符号链接。

server {
root /<path-to-my-django-project>/website/static;
server_name testdev.com;
gzip            off;
listen         8000;

location = /favicon.ico  {
rewrite "/favicon.ico" /img/favicon.ico;
}
proxy_set_header Host $host;
location / {
if (-f $request_filename) {
     add_header X-Static hit;
     access_log   off;
 }

 if (!-f $request_filename) {
     proxy_pass http://127.0.0.1:8000;
     add_header X-Static miss;
 }
 }
}

如果我 curl testdev.com,它会显示 Nginx:

curl -I http://testdev.com
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Mon, 22 Apr 2013 18:37:30 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sun, 21 Apr 2013 19:39:47 GMT
Connection: keep-alive
Accept-Ranges: bytes

但是,如果我尝试访问静态文件,则什么也没有:

curl -I http://testdev.com/static/css/style.css
HTTP/1.1 404 Not Found
Server: nginx/1.2.6
Date: Mon, 22 Apr 2013 18:38:53 GMT
Content-Type: text/html
Content-Length: 168
Connection: keep-alive

所有这一切都基于谷歌搜索,并找到了这个.

我在

listen 8000

我的 testdev.com conf 文件中的声明,因为我认为 Nginx 虚拟主机需要它,但我非常困惑。博客作者使用

127.0.1.1 testdev.com

在他的主机文件中,但如果我添加它,第一个 curl 语句就会挂起。

我究竟做错了什么?

4

1 回答 1

2

谢谢大家 - 我已经开始工作了,这是我的工作 testdev conf:

server {
    root /<path-to-django-site>;
    server_name testdev.com;
    gzip            off;
    autoindex       on;

    proxy_set_header Host $host;

    location /static/ {
        add_header X-Static hit;
    }

    location / {
        proxy_pass       http://127.0.0.1:8000;

    }
}

如果您不提供位置块,则看起来位置块采用服务器根路径。现在当我卷曲时:

curl -I  http://testdev.com/static/js/utils.js
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Tue, 23 Apr 2013 01:36:07 GMT
Content-Type: application/x-javascript
Content-Length: 2730
Last-Modified: Thu, 13 Dec 2012 18:54:10 GMT
Connection: keep-alive
X-Static: hit
Accept-Ranges: bytes

非常感谢@Evgeny - 让我走对了。Miget 对于希望做同样事情的其他人很有用。

于 2013-04-23T01:48:34.557 回答