尝试使用 UWSGI 在 nginx 上运行一个基本的 Django 应用程序。我不断收到 502 错误,错误主题行中显示错误。我以 root 身份执行所有这些操作,我知道这是不好的做法,但我只是在练习。我的配置文件如下(它包含在 nginx.conf 文件中):
服务器{监听80;服务器名称104.131.133.149;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/root/headers;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}
}
我的 uwsgi 文件是:
[uwsgi]
project = headers
base = /root
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = 127.0.0.1:8080
chmod-socket = 666
vacuum = true
据我所知,我正在将端口 80 上的所有请求(来自 nginx.conf)上游传递到 localhost,它在我的 VH 上运行,其中 uwsgi 正在监听端口 8080。我尝试了各种权限,包括 777。如果有人能指出我做错了什么,请告诉我。
答案1
好的,问题在于没有使用 --socket 127.0.0.1:8080 选项设置启动 uwsgi!这在我的 upstart 脚本中,现在看起来像:
start on runlevel [2345]
stop on runlevel [!2345]
setuid root
setgid root
exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites --socket 127.0.0.1:8080
答案2
我遇到过类似的事情。我按照如下方式运行项目:
upstream project {
server project-backend:8000;
}
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name project.alx.corp;
ssl_certificate /etc/nginx/ssl/cert.crt;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location /static/ {
alias /code/static/;
}
location / {
proxy_pass http://project;
include /etc/nginx/uwsgi_params;
}
}
[uwsgi]
base = /code/project
module = project.wsgi:application
logto = /code/logs/uwsgi.log
http-socket = 0.0.0.0:8000
master = 1
processes = 2
threads = 2