连接Nginx和Django
这是我第一次在Nginx工作。我知道为了方便地连接Django和Nginx,我需要uWSGI 安装程序 uWSGI:连接Nginx和Django,django,nginx,uwsgi,Django,Nginx,Uwsgi,这是我第一次在Nginx工作。我知道为了方便地连接Django和Nginx,我需要uWSGI 安装程序 uWSGI: sudo systemctl start nginx sudo systemctl start uwsgi sudo systemctl enable nginx sudo systemctl enable uwsgi 我认为我的uWSGI设置非常好,我已经用它在HTTP端口80上运行了我的Django网站: uwsgi--http:80--root/root/Env/firs
sudo systemctl start nginx
sudo systemctl start uwsgi
sudo systemctl enable nginx
sudo systemctl enable uwsgi
我认为我的uWSGI设置非常好,我已经用它在HTTP端口80
上运行了我的Django网站:
uwsgi--http:80--root/root/Env/firstsite--chdir/root/mysite-w mysite.wsgi
但是,由于这不是一种非常实用的方法来实现“最佳”安全性,所以我不得不使用Nginx。在本例中,我使用了“uWSGI皇帝”模式,然后创建了一个新文件/etc/uWSGI/sites/mysite.ini
:
[uwsgi]
project = mysite
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true
在本例中,我使用的不是HTTP端口,而是unix套接字,它使用uwsgi
协议
最后,我创建了/etc/systemd/system/uwsgi.service
文件(据我所知,它在启动时启动uwsgi):
Nginx:
sudo systemctl start nginx
sudo systemctl start uwsgi
sudo systemctl enable nginx
sudo systemctl enable uwsgi
我的Nginx设置非常简单,我刚刚修改了现有的服务器块以适应uWSGI配置:
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
[uwsgi]
project = mysite
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true
启动:
sudo systemctl start nginx
sudo systemctl start uwsgi
sudo systemctl enable nginx
sudo systemctl enable uwsgi
此过程不会输出任何错误
问题:
Webserver返回Nginx的默认html响应——我希望它返回Django的默认html响应。这有什么原因吗?我觉得我在这里遇到了一个非常简单的问题,因为我在stackoverflow的任何地方都找不到它
可能的原因:
/run/uwsgi/mysite.sock
由于某种原因不存在,这让我认为这可能是原因systemctl status nginx
中,从文件/run/nginx.PID读取PID时出现错误失败:无效参数
这应该是上述问题的原因?(systemctl status wsgi
没有错误)50x.html
,用于错误500502503504(在本例中是HTTP 502,坏网关-这与配置有关)systemctl status nginx
中,从文件/run/nginx.PID读取PID时出现错误失败:无效参数
这应该是上述问题的原因?(systemctl status wsgi
没有错误)
检查过了,但不起作用
请确保/run/uwsgi/
目录为空,可能这就是原因
谢谢大家! 解决了这个问题
Nginx服务器配置:
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
[uwsgi]
project = mysite
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true
不匹配uWSGI
配置:
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
server {
listen 80;
server_name mysite.com www.mysite.com;
location = favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /root/mysite;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/mysite.sock;
}
}
[uwsgi]
project = mysite
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true
可见,Nginx配置中指定的unix套接字路径不正确。因此,这些套接字路径必须在配置中匹配:
/run/uwsgi/%(project)。sock
可能在nginx仍指向其默认值的地方。检查是否定义了任何服务器块。django设置是否在允许的\u主机列表中有“mysite.com”和“www.mysite.com”。@HashSplat Yesmysite.com
在允许的\u主机数组中。@NishanthSpShetty我想没有,我检查了,只有一个服务器块。顺便说一句,它返回'50x.html',这可能是由于内部服务器错误造成的。假设您在进行更改后重新加载或重新启动了nginx,那么nginx pid问题呢???@NishanthSpShetty出于某种原因,nginx pid问题是由上述问题引起的。一旦我解决了这个问题,就不再有nginx-pid错误了。