Ситуация следующая. Используя видео с ютуба, которое опирается на
вот эту старую инструцию, я настроил сервер для Django.
Если кратко то:
Ununtu 18.04
pip, git, virtualenv, python3, git pull ..
gunicorn, supervisor
nginx
certbot (сертификат для https)
всё работает, но не могу настроить, чтоб с www переходило на "без www". Что только не пробовал. И как мне кажется засада в том, что я настроил gunicorn через soket.
Вот конфигурационный файл gunicorn#!/bin/bash
NAME="fasad.biz" # name application (domain)
DJANGODIR=/webapp/fsdbz/_fsdbz # path to Django application
SOCKFILE=/webapp/fsdbz/run/gunicorn.sock # we will communicte using this unix socket
USER=fsdbz # the user to run as
GROUP=webapp # the group to run as
NUM_WORKERS=3 # Gunicorn spawn. "qty core server" * 2 + 1
DJANGO_SETTINGS_MODULE=_fsdbz.settings # which settings file should Django use
DJANGO_WSGI_MODULE=_fsdbz.wsgi # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../v/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../v/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
а это nginx-конфигурацияmap $sent_http_content_type $expires {
"text/html" epoch;
"text/html; charset=utf-8" epoch;
default off;
}
upstream fsdbz {
# fail_timeout=0 means we always retry an upstream even if it failed to return a good HTTP response (in case the Unicorn master nukes a single worker for timing out).
server unix:/webapp/fsdbz/run/gunicorn.sock fail_timeout=0;
}
server {
server_name www.fasad.biz fasad.biz;
client_max_body_size 4G;
access_log /webapp/fsdbz/logs/nginx-access.log;
error_log /webapp/fsdbz/logs/nginx-error.log;
location /.well-known {
root /var/www/html; # Need for letsencrypt (certbot)
}
location /_static/ {
alias /webapp/fsdbz/_fsdbz/_static/;
}
location /_media/ {
alias /webapp/fsdbz/_fsdbz/_media/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $server_name;
proxy_pass http://fsdbz;
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /webapp/fsdbz/_fsdbz/_static/;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/fasad.biz/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/fasad.biz/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = fasad.biz) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name fasad.biz;
return 404; # managed by Certbot
}
ну не работает редирект с www и хоть ты тресни. Даже бывало, что основной выдавал 404 или 502, а с www вообще как-будто там никто не живёт.
Помогите, люди добрые. Что только не пробовал.
p.s. как теперь перенастроить, чтобы без сокета, я тоже не знаю (знаний пока не хватает)