【发布时间】:2018-10-24 15:59:35
【问题描述】:
我正在尝试运行我的网站,当我运行时
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 并且我的测试文本出现了, 但是如果我尝试访问 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;
}
}
site-available 和 site-enable 已链接
我做错了什么为什么它在 192.xxx.xxx.xxx:8080 上工作 但没有通过域和 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 not trought drlandivar.com 请帮忙
【问题讨论】:
-
server_name drlandivar.com www.drlandivar.com;表示该块不接受没有主机名(只是一个 IP 地址)的请求。所以 nginx 会改为显示回退页面。请注意,当 DEBUG=False 时,Django 也应该拒绝没有接受主机名的请求。因此,在任何情况下,裸露的 IP 地址通常都会失败。 -
您是否打算仅使用 IP 地址在生产中提供您的 django 页面?这是可能的,但你应该重新提出你的问题,专门询问这个问题。
-
您正在使用带有 HTTP 协议的 uwsgi,因此您必须在 nginx 配置中使用 proxy_pass(而不是 uwsgi_pass)。 (反之亦然)