当我部署Django项目时,请遵循以下教程:[http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html?highlight=django 当我完成步骤 nginx基本测试时,我键入taopinpin.cn/media/media.png后,页面响应被拒绝,如下所示: enter image description here
和我的项目是这样的: enter image description here mysite_nginx.conf文件是:
upstream django {
server 127.0.0.1:8001;
}
server {
listen 8000;
server_name taopinpin.cn;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /root/mysite/media;
}
location /static {
alias /root/mysite/static;
}
location / {
uwsgi_pass django;
inlcude /root/mysite/mysite/uwsgi_params;
}
}
我不知道哪里出错了,您能帮我调试一下吗?非常感谢。
答案 0 :(得分:0)
在您的 mysite_nginx.conf 中尝试以下操作:
upstream cluster {
server 127.0.0.1:8001;
}
server {
listen 8000;
server_name taopinpin.cn;
charset utf-8;
client_max_body_size 75M;
location / {
uwsgi_pass cluster;
proxy_set_header X-Forwarded-Protocol $scheme;
include /root/mysite/mysite/uwsgi_params;
uwsgi_modifier1 30;
proxy_set_header HTTP_AUTHORIZATION $http_authorization;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
uwsgi_read_timeout 900;
}
location /media {
alias /root/mysite/media;
}
location /static {
alias /root/mysite/static;
}
location ~* ^.+\.(js|css)$ {
access_log off; log_not_found off;
}
}
,然后在您的/root/mysite/mysite/uwsgi_params
中(验证该文件确实存在):
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_ADDR $server_addr;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
运行nginx -t
以验证您的语法有效。
运行service nginx reload
或/etc/init.d/nginx reload
创建目录/root/mysite/logs
并将其写为
sudo mkdir /root/mysite/logs
然后重新启动uwsgi-调整youruser
和yourproject
以符合您的规格:
uwsgi --socket :8001 --module yourproject.wsgi --emperor /etc/uwsgi/vassals --uid youruser --gid youruser --master --processes 6 --threads 3 --stats 127.0.0.1:9191 --daemonize=/root/mysite/logs/uwsgi.log
基于您的映像,nginx服务器无法在以下位置提供媒体文件
/root/mysite/media
-赋予Nginx用户所有权
如果您在/etc/nginx/nginx.conf中的用户是
user www-data;
然后做:
sudo chown www-data:www-data /root/mysite/media
-nginx用户(可能不是root用户)必须有权访问此目录。
答案 1 :(得分:0)
这里有一些错误。 ie.document.querySelector("a[onclick*=https://www.ishares.com/us/products/239505/ishares-us-consumer-goods-etf/1395165510754.ajax]").Click
和root
并不是同一件事,实际上在这里完全没有必要。您应该在位置指令之外指定一次root。无论如何,他们将从服务器指令继承它,并且您基本上在做同样的事情。
alias
答案 2 :(得分:0)
首先,您在inlcude
中有一个错字,而应该是include
。
基于screen capture,您以用户root
的身份运行应用程序,并且您的应用程序安装在目录~/mysite
上,用户{{ 1}},但是当使用用户名/root/mysite
运行nginx时,除非使用root
运行所有内容,否则无法访问www-data
。 使用/root/mysite
或与sudo
一起运行应用不是一个好习惯。
默认情况下,root
安装在sudo
中,除非您的目录不在uwsgi_params
中,否则通常不需要指定目录。
缺少对Web根目录在nginx配置中的位置的定义,如果您定义了Web根目录/etc/nginx/
,则定义了etc/nginx/
和root /root/mysite
的位置指令似乎是多余且必要的。
就上述所有内容而言,这是它应适用于用户location /media
的配置,并假设您还将location /static
的用户设置从root
更改为{{ 1}}。 再次不推荐。
/etc/nginx/nginx.conf