Nginx и gunicorn err 403 по запросу третьего домена - PullRequest
0 голосов
/ 06 сентября 2018

На моем сервере nginx я настроил свой nginx.conf следующим образом для использования с gunicorn (и приложением django):

server {
    server_name  *.mytest.io;
    root         /var/www;
}

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  ~^(?<account>.+)\.mytest\.io$;
    root         /var/www;


#add_header Test $account;  

 # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location /static/ {
        alias /var/www/web/core/frontend/static/;
    }       

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        #add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        add_header P3P $account;
    }

Теперь, если я вызываю mytest.io, все готово, но если я вызываю, например, demo.mytest.io или demo1.mytest.io (я уже настраиваю на своей демоверсии dns и demo1 с ip сервера), nginx возвращает ошибку "403 Запрещено"

[ошибка] 27554 # 0: * 27 указатель каталога "/ var / www /" запрещен

Почему для основного домена нет проблем, а для запроса субдомена я получаю сообщение об ошибке в том же месте? (/ Вар / WWW)

Заранее спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

У вас есть два серверных блока.Запрос к demo.mytest.io или demo1.mytest.io будет соответствовать директиве server_name в этом:

server {
    server_name  *.mytest.io;
    root         /var/www;
}

У вас нет директив index или try_files в этом блоке, поэтомузапрос без пути к URI интерпретируется Nginx как запрос к списку каталогов вашего корневого каталога.

У вас нет директивы autoindex, и по умолчанию для нее установлено значение off, который запрещает вывод содержимого каталога, поэтому ваш запрос отклонен.

Запрос к mytest.io не соответствует директиве server_name в любом блоке, но добавление default_server к директиве listen во втором блоке означает, что Nginx будет использовать этот блок для обработкилюбые запросы, которые не совпадают ни с какими другими блоками сервера, поэтому этот запрос попадает сюда.

Второй блок имеет рабочий набор директив, поэтому он работает.

...