使用 uwsgi 和 nginx 部署 Django,uwsgi 可以,但 nginx 不工作
Deploying Django with uwsgi and nginx, uwsgi ok but nginx not working
我正在尝试 运行 我的网站,当我 运行
uwsgi --socket 0.0.0.0:8080 --protocol=http --chdir /opt/virtualenv/landivarpj/ --wsgi-file /opt/virtualenv/landivarpj/landivarpj/wsgi.py
我可以正常访问 192.xxx.xxx.xxx:8080 并且出现我的测试文本,
但是如果我尝试去 trought 192.xxx.xxx.xxx 我只会得到一个 nginx 欢迎页面,
如果我尝试进入我的域 www.xxxxxxxx.com,那么它根本不起作用。
在我的项目文件夹中(opt/virtualenv/landivarpj)我有一个 uswgi_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 REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
然后在 (opt/virtualenv/landivarpj/landivarpj) 中 wsgi.py 是
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "landivarpj.settings")
application = get_wsgi_application()
在etc/nginx/sites-available中有drlandivar.conf
upstream django {
server 192.xxx.xxx.xxx:8080; # for a web port socket (we'll use this first)
}
server {
listen 80;
server_name drlandivar.com www.drlandivar.com;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /opt/virtualenv/landivarpj/media;
}
location /static {
alias /opt/virtualenv/landivarpj/static;
}
location / {
uwsgi_pass django;
include /opt/virtualenv/landivarpj/uwsgi_params;
}
}
站点可用和站点启用已关联
我做错了什么为什么它在 192.xxx.xxx.xxx:8080 上工作
但不是 trought 域和 nginx
***** 根据 nginx/availables-site/drlandivar.conf
推荐的新编辑
upstream django {
server 192.254.145.207:8080;
}
server {
listen 80;
server_name drlandivar.com www.drlandivar.com;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /opt/virtualenv/landivarpj/media;
}
location /static {
alias /opt/virtualenv/landivarpj/static;
}
location / {
proxy_pass http://django;
}
}
它仍然给我同样的问题页面只加载 trought 192.xxx.xxx.xxx:8080 不 trought drlandivar.com
请帮忙
您需要 proxy_pass
。以下配置应该可以解决问题。
upstream django {
server 192.254.145.207:8080;
}
server {
...
location / {
proxy_pass http://django;
}
}
将您的示例与我的一个工作示例进行比较,有一点很突出。尝试
...
location / {
include uwsgi_params;
proxy_pass http://django;
}
将 --logto /var/log/uwsgi/uwsgi.log
添加到您的 uwsgi 调用(在创建 /var/log/uswgi
并使其可写到 uwsgi 进程之后)可能会带来一些额外的启发。
我正在尝试 运行 我的网站,当我 运行
uwsgi --socket 0.0.0.0:8080 --protocol=http --chdir /opt/virtualenv/landivarpj/ --wsgi-file /opt/virtualenv/landivarpj/landivarpj/wsgi.py
我可以正常访问 192.xxx.xxx.xxx:8080 并且出现我的测试文本, 但是如果我尝试去 trought 192.xxx.xxx.xxx 我只会得到一个 nginx 欢迎页面, 如果我尝试进入我的域 www.xxxxxxxx.com,那么它根本不起作用。
在我的项目文件夹中(opt/virtualenv/landivarpj)我有一个 uswgi_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 REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
然后在 (opt/virtualenv/landivarpj/landivarpj) 中 wsgi.py 是
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "landivarpj.settings")
application = get_wsgi_application()
在etc/nginx/sites-available中有drlandivar.conf
upstream django {
server 192.xxx.xxx.xxx:8080; # for a web port socket (we'll use this first)
}
server {
listen 80;
server_name drlandivar.com www.drlandivar.com;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /opt/virtualenv/landivarpj/media;
}
location /static {
alias /opt/virtualenv/landivarpj/static;
}
location / {
uwsgi_pass django;
include /opt/virtualenv/landivarpj/uwsgi_params;
}
}
站点可用和站点启用已关联
我做错了什么为什么它在 192.xxx.xxx.xxx:8080 上工作 但不是 trought 域和 nginx
***** 根据 nginx/availables-site/drlandivar.conf
推荐的新编辑upstream django {
server 192.254.145.207:8080;
}
server {
listen 80;
server_name drlandivar.com www.drlandivar.com;
charset utf-8;
client_max_body_size 75M; # adjust to taste
location /media {
alias /opt/virtualenv/landivarpj/media;
}
location /static {
alias /opt/virtualenv/landivarpj/static;
}
location / {
proxy_pass http://django;
}
}
它仍然给我同样的问题页面只加载 trought 192.xxx.xxx.xxx:8080 不 trought drlandivar.com 请帮忙
您需要 proxy_pass
。以下配置应该可以解决问题。
upstream django {
server 192.254.145.207:8080;
}
server {
...
location / {
proxy_pass http://django;
}
}
将您的示例与我的一个工作示例进行比较,有一点很突出。尝试
...
location / {
include uwsgi_params;
proxy_pass http://django;
}
将 --logto /var/log/uwsgi/uwsgi.log
添加到您的 uwsgi 调用(在创建 /var/log/uswgi
并使其可写到 uwsgi 进程之后)可能会带来一些额外的启发。