繁体   English   中英

Nginx配置静态站点和Django + uWSGI

[英]Nginx Configure Static Site and Django+uWSGI

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

  • 我的端口808000打开。
  • 我花了三天的时间来使它工作。
  • 在本地我没有问题,然后我又没有使用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 uwsgi进行$ 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产生“未找到”(不是404)

= site2产生一个

我将不胜感激:)

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?;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM