Рейтинг:0

Автоматический виртуальный хост — единая конфигурация Nginx

флаг cn

Я пытаюсь создать единую конфигурацию Nginx для нескольких хостов на основе каталога. Я следовал руководству, которое, кажется, хорошо работает со стандартной настройкой HTTP, но когда я добавляю перенаправление HTTPS 301, я могу получить ошибку «недопустимое перенаправление». Любые идеи по этому поводу? Ниже мой конфиг. Тх

сервер {
  слушать х.х.х.х:80;

  server_name ~^(?<sname>.+?).domain.com$;

  вернуть 301 https://$server_name$request_uri;

}

сервер {
    слушать x.x.x.x:443 ssl default_server;
    server_name ~^(?<sname>.+?).domain.com$;


корень /var/web/$sname;

индекс index.html index.htm index.php;


кодировка utf-8;

    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found выключен; }
    location = /robots.txt { access_log off; log_not_found выключен; }


ssl_certificate /etc/letsencrypt/live/wildcard.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wildcard.domain.com/privkey.pem;

журнал_доступа /var/log/nginx/$sname-access.log;
error_log /var/log/nginx/wildcard-error.log отладка;

страница_ошибки 404 /index.php;

    отправка файла выключена;

        расположение ~ \.php {
                включить fastcgi.conf;
                #fastcgi_index index.php;
                включить cors_support;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        }
        расположение ~ /\.ht {
                отрицать все;
        }
  расположение /.известный {
    корень /var/www/html;
  }
}
djdomi avatar
флаг za
На мой взгляд, было бы более достаточным и простым в управлении, чтобы не было установки одного файла, вместо этого я написал свои страницы в каждом файле, который содержит только один и тот же домен, и я имею в виду, что я уже читал, что, возможно, почти невозможно то, что вы пытаются, но я не уверен в этой части, но вы не говорите никаких журналов
флаг us
Что выводит `curl -v http://test.domain.com`?
Рейтинг:0
флаг cz

Ваше перенаправление «недействительно», потому что вы пытаетесь перенаправить на https://~^(?<sname>.+?).domain.com$ что совершенно очевидно недействительно.

Почему это так?

Вы решили написать свой редирект следующим образом:

  вернуть 301 https://$server_name$request_uri;

Это не имеет смысла. имя сервера не является допустимым именем хоста.

Вместо этого вы должны перенаправить на тот же хост, который использовал пользовательский агент. правильная переменная использовать есть $хост, нет $ имя_сервера.

  вернуть 301 https://$host$request_uri;
djdomi avatar
флаг za
Майкл, вы преследуете меня :-) Однако, а также дополнение Good Solutin может быть: https://serverfault.com/questions/706438/what-is-the-difference-between-nginx-variables-host-http- хост-и-сервер-на?noredirect=1&lq=1
Michael Hampton avatar
флаг cz
@djdomi Это ссылка в ответе!
djdomi avatar
флаг za
укажи на то, что ты не видел, что там была ссылка на тот же сайт ;) и если я получу uvote вовремя каждый раз, когда мы встречаемся в одной теме, я бы очень быстро до 500 баллов xD
WallyKaye avatar
флаг cn
Спасибо, решение @MichaelHampton сработало. Что на самом деле означает $host в этом сценарии?
Michael Hampton avatar
флаг cz
@WallyKaye Это объясняется в связанном посте.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.