【发布时间】:2014-06-20 17:58:06
【问题描述】:
我想在我的 VPS 中设置两个不同的 Django 项目 - 有两个不同的 Gunicorn 实例(两个不同的 virutalenvs)。第一个项目完美运行:
第一个项目的 Nginx:
server {
server_name 95.85.34.87;
access_log off;
sendfile off;
location /static/ {
root Lynx/lynx/lynx_static_files/;
}
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET,POST,OPTIONS";
add_header Access-Control-Allow-Headers Content-Type;
add_header Access-Control-Max-Age 86400;
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
第一个项目的 Gunicorn:
gunicorn_django --bind localhost:8001
第二个项目的 Nginx:
server {
server_name 95.85.34.87:8002;
access_log off;
sendfile off;
location /static/ {
root Komodo/komodo/komodo_static_files/;
}
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET,POST,OPTIONS";
add_header Access-Control-Allow-Headers Content-Type;
add_header Access-Control-Max-Age 86400;
proxy_pass http://127.0.0.1:8002;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
第二个项目的 Gunicorn:
gunicorn_django --bind 95.85.34.87:8002
问题:95.85.34.87 显示我的第一个带有静态文件的项目(一切正常),95.85.34.87:8002 也有效(Gunicorn 正在工作),但不幸的是 Nginx 不为此提供静态文件出于某种原因,第二个项目。我认为问题背后的原因是server_name 设置,但我不确定如何设置它以显示我的第二个项目的静态数据。
【问题讨论】:
-
有错误吗? nginx 对第二个项目的静态文件有权限吗?
-
嗨。不,var/log/nginx/error.log 文件没有显示错误。静态文件根本没有显示,我只是在尝试直接访问 .js 文件时收到 404 错误。我应该如何检查 nginx 是否有权限?
-
404 出现在
access.log中,403 也是如此,如果 nginx 没有这些文件的权限,你会得到这样的结果。当您浏览您的网站时,为什么看不到您的浏览器检查器针对这些文件给出的错误? -
由于某种原因,access.log 文件不存在,但 error.log 向我展示了
2014/05/04 08:06:22 [emerg] 28989#0: bind() to 95.85.34.87:8002 failed (98: Address already in use)。我觉得nginx是不能听95.85.34.87:8002的,因为gunicorn是听95.85.34.87:8002的,emmm这能是真的吗?