【问题标题】:Nginx Configure Static Site and Django+uWSGINginx 配置静态站点和 Django+uWSGI
【发布时间】:2015-02-19 02:04:54
【问题描述】:

我在让 Nginx 为静态 index.html 页面提供服务以及为 Django 站点提供服务时遇到了一些麻烦。 谁能指出我做错了什么?

  • 我打开了80 和8000 端口。
  • 我花了三天时间试图让这个工作。
  • 在本地我没有问题,然后我又没有使用 nginx。

我将uwsgi_params 放在/etc/nginx/uwsgi_params 中

/etc/nginx/sites-enabled

这是我到实际配置文件的符号链接

site1.conf -> /home/jesse/projects/site1/conf/site1.conf
site2.conf -> /home/jesse/projects/site2/conf/site2.conf

/home/jesse/projects/site1/conf/site1.conf

这只是一个基本的静态网站,但不会加载:(

server {
    listen 80;
    server_name www.site1.com;
    rewrite ^(.*) http://site1.com$1 permanent;


    location / {
       root /home/jesse/projects/site1/;
    }
}

/home/jesse/projects/site2/conf/site2.conf

=manage.py/wsgy.py 位于/home/jesse/projects/site2/site2/ 下

= 这是一个使用 uWSGI 的 Django 站点,我使用 $ pip install uwsgi 安装它。

server {
    listen 80;
    server_name www.site2.com;
    rewrite ^(.*) http://site2com$1 permanent;

    root /home/site2/projects/site2/site2;

    location /static/ {
        alias /home/jesse/site2/projects/site2/site2/static/;
        #expires 30d;
    }

    location /media/ {
        alias /home/jesse/site2/projects/site2/site2/media/;
        #expires 30d;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
    }
}

/home/site2/projects/site2/conf

[uwsgi]
projectname = site2
projectdomain = site2.com
base = /home/jesse/site2/projects/site2/site2

# Config
plugins = python
master = true
protocol = uwsgi
env = DJANGO_SETTINGS_MODULE=%(projectname).settings
pythonpath = %(base)/src/%(projectname)
module = %(projectname).wsgi
socket = 127.0.0.1:8000
logto = %(base)/logs/uwsgi.log

# Runs daemon in background
daemonize = /home/jesse/log/$(projectname).log

Nginx 重启

$ sudo service nginx restart
* Restarting nginx nginx                                           [ OK ] 

= site1 产生 Not Found(不是 404)

= site2 产生一个

我将不胜感激任何帮助:)

【问题讨论】:

  • = The site2 produces a - 什么?

标签: python django nginx uwsgi


【解决方案1】:
rewrite ^(.*) http://site1.com$1 permanent;

site1 中的这个,不受任何服务器管理,因为没有 server_name 处理 site.com(没有 www)。

然后再次使用 site2

rewrite ^(.*) http://site2com$1 permanent;

首先修复这些行。

我认为正确的方法是编写一个捕获 www 的服务器规则。命名并将它们重写为非 www,并将 site1.com 或 site2.com 作为 server_name 放在您现在拥有的规则中,作为重新布线的示例

server {
    listen 80;
    server_name www.site1.com
    return 301 http://site1.com$request_uri?;
}

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2020-01-23
    • 2011-06-26
    • 2016-04-11
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多